php - 在文件输入更改时上传文件

标签 php javascript jquery ajax

我正在尝试在文件输入更改时上传文件,但我无法让它工作,因为我不太擅长 javascript。

我确实在谷歌上搜索并找到了这个:How can I upload files asynchronously?

我使用了它并尝试将其更改为我想要的使用方式。但是我收到了错误

`Uncaught TypeError: Illegal invocation`

这是我的功能:

function uploadFile(formData){
    $.ajax({
        url: 'inc/ajax/uploadFile.php',  //Server script to process data
        type: 'POST',
        data: {'formData':formData},
        //Ajax events
        success: function(html){
            alert(html);
        }
    });
}

我这样调用函数:

$("input:file").change(function(){
    var file = this.files[0];
    uploadFile(file);
})

和uploadFile.php

<?php
 $formData = $_GET['formData'];
 echo $formData;
?>

我只是在测试并尝试在 php 中返回文件,看看我是否可以让它工作。但我不知道如何用 PHP 调用它或用 AJAX 发送它。一旦我可以在 PHP 中检索 $_FILES,我就知道如何使用 PHP 上传它。

最佳答案

除了其他答案,将此添加到您的 ajax

contentType: false,
processData: false

喜欢:

var formData = new FormData();
formData.append('formData', file);
$.ajax({
    url: 'inc/ajax/uploadFile.php',  //Server script to process data
    type: 'POST',
    data: formData,
    contentType: false,
    processData: false,
    //Ajax events
    success: function(html){
        alert(html);
    }
});

您还应该考虑那些可能没有较新浏览器的人,并只输入一些错误消息,例如:

if(window.FormData === undefined){
    alert('sorry buddy, your browser\'s too old!');
    return;
}

关于php - 在文件输入更改时上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18385924/

相关文章:

php - 如何显示数据库结果作为实际数据的引用?

javascript - 需要了解 Javascript Array.sort() 函数

javascript - Chrome - 刷新等待ajax请求结束 - 长轮询

php - 将 PHP 中文本区域的数据插入 MySQL 数据库(也跳过重复)

php - 如何使 num_rows 适用于此选择查询?

php - 使用 PayPal 付款

javascript - 关于在注销字段中存储当前日期和时间

javascript - 对于 jQuery(不是 jQuery UI!)来说,这是一个多么好的日期+时间选择器?

jquery - 禁用代码在 Firefox 中不起作用,但在 chrome 和 IE 中不起作用

javascript - 调用 ID 包含 onclick 函数的索引