<?php
namespace wcf\system\upload;
+use wcf\util\FileUtil;
/**
* Handles file uploads.
if (is_array($rawFileData['name'])) {
// multiple uploads
for ($i = 0, $l = count($rawFileData['name']); $i < $l; $i++) {
- $this->files[] = new UploadFile($rawFileData['name'][$i], $rawFileData['tmp_name'][$i], $rawFileData['size'][$i], $rawFileData['error'][$i], $rawFileData['type'][$i]);
+ $this->files[] = new UploadFile($rawFileData['name'][$i], $rawFileData['tmp_name'][$i], $rawFileData['size'][$i], $rawFileData['error'][$i], (FileUtil::getMimeType($rawFileData['tmp_name'][$i]) ?: $rawFileData['type'][$i]));
}
}
else {
- $this->files[] = new UploadFile($rawFileData['name'], $rawFileData['tmp_name'], $rawFileData['size'], $rawFileData['error'], $rawFileData['type']);
+ $this->files[] = new UploadFile($rawFileData['name'], $rawFileData['tmp_name'], $rawFileData['size'], $rawFileData['error'], (FileUtil::getMimeType($rawFileData['tmp_name']) ?: $rawFileData['type']));
}
}
* @category Community Framework
*/
class FileUtil {
+ /**
+ * finfo instance
+ * @var \finfo
+ */
+ protected static $finfo = null;
+
/**
* Tries to find the temp folder.
*
public static function isApacheModule() {
return function_exists('apache_get_version');
}
+
+ /**
+ * Returns the mime type of a file.
+ *
+ * @param string $filename
+ * @return string
+ */
+ public static function getMimeType($filename) {
+ if (self::$finfo === null) {
+ if (!class_exists('\finfo', false)) return '';
+ self::$finfo = new \finfo(FILEINFO_MIME_TYPE);
+ }
+
+ return self::$finfo->file($filename);
+ }
}