请随意通过不良练习给我打电话,但我在mime_content_type()
的服务器上验证上传的文件MIME类型,并计划忽略客户端文件名并使用我自己的MIME文件名适当的延期。就像一个测试用例(预期用例是图像),我上传了一个带有Chrome的.jar文件,它正确地将MIME类型标识为application / x-java-archive,但是我的Apache / PHP服务器将MIME标识为应用程序/压缩。客户端和服务器位于同一台Fedora机器上。从技术上讲,jar和zip大致相同,但在这种情况下通过MIME创建文件扩展名是不正确的。
这是Linux还是FileInfo问题?也许我错过了使用正确MIME数据库等的准备步骤?
强制性说明性代码示例:
服务器端
<?php
header('Content-Type: application/json');
$client_mime = $_FILES['image']['type'];
$tmp_name = $_FILES['image']['tmp_name'];
$server_mime = mime_content_type($tmp_name);
$mimetest = array('client_mime' => $client_mime, 'server_mime' => $server_mime);
echo json_encode($mimetest);
?>
客户端JS
var formData = new FormData();
var $image = $('#file')[0].files[0];
formData.append('image', $image);
var request = $.ajax({ method: "POST", url: "mimetest.php", data: formData, contentType: false, processData: false});
request.done(function(jsonData) { console.log('Received: ' + JSON.stringify(jsonData)) });
服务器响应(通过Chrome DevTools)
Received: {"client_mime":"application/x-java-archive","server_mime":"application/zip"}