我怎样才能收到带有PHP附加文件和字符串的FormData?

时间:2014-05-08 18:08:58

标签: javascript php xmlhttprequest

我在JS中使用此代码我正在向php文件发送XHR post请求如何处理在PHP中获取文件和字符串?

我将使用字符串创建一个类似“Code / Math”的路径,然后将文件移动到该路径。

JavaScript

$( document ).ready(function() {
    $('#Upload').click(function(){
        var formData = new FormData();
        var url = 'uploadFile.php';
        var file = $("#file");
        var xhr = new XMLHttpRequest();
        formData.append('File',file[0].files[0]);
        formData.append('Path','/Upload/Upload');
        xhr.addEventListener('progress', function (e) {
            var done = e.position || e.loaded, total = e.totalSize || e.total;
            var percent = (Math.floor(done / total * 1000) / 10) + '%';
            $('#uploadprogress').css('width', percent+'%');
        }, false);

        if (xhr.upload) {
            xhr.upload.onprogress = function (e) {
                var done = e.position || e.loaded, total = e.totalSize || e.total;
                var percent = (Math.floor(done / total * 1000) / 10) + '%';
            };
        }

        xhr.onreadystatechange = function (e) {
            if (4 == this.readyState) {
                $('#message').text(e.currentTarget.response);
                $('#uploadprogress').css('width', '0%');
                $('#file').val('');
            }
        };

        xhr.open('post', url, true);
        xhr.send(formData);
    });

    var progressHandling = function(e){
        if(e.lengthComputable){
            var percent = Math.round((e.loaded / e.total) * 100);
            $('#uploadprogress').css('width', percent+'%');
        }
    };

    var completeHandler = function(data){
        $('#message').text(data);
        $('#uploadprogress').css('width', '0%');
        $('#file').val('');
    };
});

1 个答案:

答案 0 :(得分:1)

在服务器上处理ajax请求时,将ajax视为表单提交。您处理它的方式与表单完全相同。对于POST请求,参数将在$_POST$_GET中用于获取请求,文件将在$_FILES下。虽然取决于ajax请求的确切形成/发送方式,但也存在异常,因为可以在请求正文中而不是作为参数发布数据,但这并不适用于您的情况。

<强> TL; DR:

使用$_POST["Path"]$_FILES["File"]