Javascript PHP$\文件不允许上传音频文件(wav、mp3、aiff等),但允许任何其他类型的扩展 我的问题
Javascript PHP$\文件不允许上传音频文件(wav、mp3、aiff等),但允许任何其他类型的扩展 我的问题,javascript,php,Javascript,Php,因此,我一直在尝试使用JavaScript(XHR)和PHP创建一个简单的文件上传系统,我遇到了一个问题,即一旦文件上传到PHP处理程序,它总是返回未设置的$\u文件 代码 JavaScript(在服务器上www.example.com): PHP(在服务器handle.example.com)上: 我试过的 分别将upload_max_filesize和post_max_size设置为150M和151M 更改字段名的名称 将$\u文件更改为$\u帖子 所有这些对我都不起作用,而且我似
因此,我一直在尝试使用JavaScript(XHR)和PHP创建一个简单的文件上传系统,我遇到了一个问题,即一旦文件上传到PHP
处理程序
,它总是返回未设置的$\u文件
代码
JavaScript(在服务器上www.example.com
):
PHP(在服务器handle.example.com
)上:
我试过的
- 分别将
upload_max_filesize
和post_max_size
设置为150M
和151M
- 更改字段名的名称
- 将
$\u文件
更改为$\u帖子
所有这些对我都不起作用,而且我似乎找不到与我的问题相关的其他可行的解决方案,所以我非常感谢所有的帮助
更新:
经过一些仔细的测试,我意识到我的上传脚本实际上工作得很好。它不喜欢上传的文件类型。由于某种原因,PHP(至少7.2.1版)不喜欢上传音频文件;上传图像文件或PDF
的工作很好
格式化为多部分/表单数据的请求的内容类型
标头必须包含一个边界
参数,以告知消息收件人每个新数据位的起始位置
通过手动提供没有标题的标题,可以使请求不可解析
拆下那条线。允许XMLHttpRequest使用FormData对象为您生成正确的内容类型标题。我已经这样做了,并且它不会以任何方式更改输出。与文件
变量关联的值是什么?好的,听起来很愚蠢,但我们能看到HttpAccess吗?我有一个朋友,他通过htaccess修复了跨资源shizzle,你在哪里定义javascript变量,file
@这个家伙有两个大拇指不是一个愚蠢的问题!将尽快更新:)@Akintunde Rotimi我意识到我应该包括这一点-一秒:
var file = document.getElementById("fileInput").files[0];
var formData = new FormData();
formData.append("track", file);
var xhr = new XMLHttpRequest();
xhr.open("POST", "//handle.example.com/uploads.php", true);
xhr.onload = function(){
if(xhr.status == 200)
// awesome, it worked
else
return console.error("Something went wrong.");
};
xhr.send(formData);
header("Access-Control-Allow-Origin: http://www.example.com", false);
if(isset($_FILES["track"])){
$file = $_FILES["track"];
$fileTemp = $file["tmp_name"];
$fileSize = filesize($fileTemp);
if($fileSize <= 150000000)
$data = "Success"; // this is returned if a file is an image file
} else
$data = "File not set."; // this is returned if a file is an audio file
echo $data;
exit;
<form method="post" enctype="multipart/form-data" id="ulF_uF1">
<input type="file" name="file" accept="audio/x-aiff,audio/flac,audio/mpeg,audio/ogg,audio/wav" id="fileInput">
</form>
xhr.setRequestHeader("Content-Type", "multipart/form-data");