Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP$\文件不允许上传音频文件(wav、mp3、aiff等),但允许任何其他类型的扩展 我的问题_Javascript_Php - Fatal编程技术网

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");