Ste*_*kun 4 php mime json mime-types
我知道 json 文件的正确 MIME 类型applicattion/json可以通过这篇文章确认什么是正确的 JSON 内容类型?.
但是,我想知道为什么我的 PHP 安装返回text/plain. 在解析 json 文件之前,我需要测试正确的 mime。
我有以下代码
$fileinfo = new finfo();
$fileType = $fileinfo->file( $_FILES['tmp_name'], FILEINFO_MIME_TYPE );
Run Code Online (Sandbox Code Playgroud)
其中$fileType返回text/plain而不是applicattion/json.
同样,$_FILES['type']返回application/octet-stream而不是applicattion/json。
我错过了什么?
编辑
我正在通过 jQuery ajax 发送文件:
var formData = new FormData( $(form)[0] );
var jsonFile = $( 'input:file[name=contents]', form ).get(0).files[0];
formData.append( 'jsonFile', jsonFile );
$.ajax({
type: 'POST',
url: 'url',
data: formData,
dataType:'json',
enctype : 'multipart/form-data',
processData: false,
contentType : false,
encode:true,
})
Run Code Online (Sandbox Code Playgroud)
finfo 通过内容识别文件类型,而不是文件扩展名。
只有带签名的文件才能被正确识别。否则,将根据其内容被标识为text/plain(ASCII) 或application/octet-stream(Binary)。
不幸的是,JSON 编码的内容没有签名,因此被标识为text/plainor application/octet-stream。
如需进一步阅读,请访问:-
希望这可以帮助。
[编辑 1] 以下是我对上述内容的测试脚本。干杯。
$filename = "test.json";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
file_put_contents($filename, "<?php \n");
printf("%s\n", finfo_file($finfo, $filename));
file_put_contents($filename, "@echo off\n");
printf("%s\n", finfo_file($finfo, $filename));
file_put_contents($filename, json_encode(array("a" => "1")));
printf("%s\n", finfo_file($finfo, $filename));
file_put_contents($filename, "\xff");
printf("%s\n", finfo_file($finfo, $filename));
finfo_close($finfo);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1097 次 |
| 最近记录: |