CodeIgniter: wrong uploading file mime type

2019-09-08 06:09发布

问题:

Sometimes, when uploading files using <input> tag, I encounter problem where the file extension doesn't match with its mime type defined in application/config/mimes.php. For example when I upload a .doc file, it turns out that its mime type is actually application/octet-stream, not application/msword as expected.

I had this problem sometimes in the past. I did work around by adding application/octet-stream to .doc mime array. But is there a proper way to fix it?

I think the browser have force my file's mime type somehow. Is there any kind of HTTP header or html meta tag to prevent this?

回答1:

As you can see here this a common problem and the solution you applied is legitimate.



回答2:

It is not due to problem with codeignitor. It is due to php issue. For instance finfo_file function will return image with extension jpeg as image/png.

So, solution is go to config/mimes.php file and then add corresponding extension.

In case you do not know what is the extension behind the scene php is picking add this code to check.

$finfo = @finfo_open(FILEINFO_MIME);
$mime = @finfo_file($finfo, $_FILES["myname"]['tmp_name']);

$mime will be extension which php finally returns.