ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

为什么PHP没有为json文件返回正确的mime?

2019-07-24 17:41:21  阅读:189  来源: 互联网

标签:php json mime-types mime


我知道json文件的正确MIME类型是applicattion / json,可以通过这篇文章What is the correct JSON content type?确认.

但是,我想知道为什么我的PHP安装返回text / plain.我需要在解析json文件之前测试正确的mime.

我有以下代码

$fileinfo = new finfo();
$fileType = $fileinfo->file( $_FILES['tmp_name'], FILEINFO_MIME_TYPE );

其中$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,
})

解决方法:

finfo通过内容识别文件类型,而不是文件扩展名.

只能正确识别带签名的文件.否则,将根据其内容将其标识为text / plain(ASCII)或application / octet-stream(Binary).

不幸的是,JSON编码的内容没有签名,因此被标记为text / plain或application / octet-stream.

如需进一步阅读,请访问: –

List of file signatures

希望这可以帮助.

[编辑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);

标签:php,json,mime-types,mime
来源: https://codeday.me/bug/20190724/1524569.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有