关于php:如何发送ajax请求上传文件

how to send ajax request to upload file

本问题已经有最佳答案,请猛点这里访问。

我有这样的标记我现在不使用表单。我想使用Ajax上载图像。

1
2
3
4
5
6
7
8
9
10
11
12
$('#file').on('change', function(e) {
    $.ajax({
        url:"upload.php",
        type:"POST",
        data: ?,
        processData: false,
        contentType: false,
        success: function (response) {
            console.log(response);
        }
    });
})

在数据中,我必须发送什么?我只得到了堆栈中的Ajax溢出,但我无法理解。还有一件事,我怎样才能在PHP文件中接收数据?

谢谢您?


无法通过Ajax上传图像。您可以创建一个隐藏的iframe并使用它上载文件。


您正在尝试的操作可以在支持FormData函数的浏览器中完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$('#file').on('change', function(e) {
    var data = new FormData();
    data.append('file',this.files[0]);
    $.ajax({
        url:"upload.php",
        type:"POST",
        data: data,
        processData: false,
        contentType: false,
        success: function (response) {
            console.log(response);
        }
    });
})


请注意,通常通过Ajax上传文件是一件痛苦的事情。您可以在jquery中通过ajax查看相关问题文件上传。

就我个人而言,我倾向于在提交时生成一个隐藏的iframe,以及一个表单的副本,然后提交。完成后,iframe的内容将被抓回jquery。在旧的IE版本中,我找不到另一种工作方式。