PHP:接收XHR Level 2发送的一个文件

时间:2014-01-11 08:53:30

标签: php ajax upload

这个问题可能有点像菜鸟,但我找不到这个。如果我使用这种方式发送文件:

$scope.uploadFile = function(file) {
    if ($scope.XHR2Support()) {
        var xhr = new XMLHttpRequest(); 
        xhr.upload.onprogress = function(e) {
            console.log("PROGRESS", e.loaded, e.total);
        } 

        xhr.onload = function(e) {
            if (xhr.status == 200) {
                console.log("Upload finished!");
            }
            else {
                console.log("Upload error", xhr.status);
            }
        }

        xhr.onerror = function(e) {
            console.log("Error occured", e);
        }

        xhr.open("POST", "./?files,upload&test=test", true);
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        xhr.setRequestHeader("Content-Type", file.type);
        xhr.send(file);
    }
  }

,如何使用PHP的正确MIME类型接收并保存它?

1 个答案:

答案 0 :(得分:1)

您无法将MIME类型保存到已保存的文件中。浏览器根据文件扩展名决定它是哪种MIME类型,除非发送Content-type HTTP标头。

您可以使用服务器端的apache_request_headers()读取xhr.setRequestHeader发送的http标头。

要通过XHR2发送文件,最简单的方法是使用FormData对象,请参阅上传文件或blob 部分in this tutorial