使用'load'函数将文件变量导入PHP

时间:2017-10-05 17:02:45

标签: javascript php jquery html ajax

可以使用ajax函数执行此操作,但我特别想使用jQuery的.load()函数来尝试此操作。

HTML:

<form class="form" action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="csv-file">
    <p class="upload-button">Upload</p>
    <p class="upload-output"></p>
</form>

JS:

$('.upload-button').click(function() {
    var formData = $('.form').serializeArray();
    $('.upload-output').load('upload.php', formData);
});

您应该能够看到,当我点击upload-button时,表单将被序列化并发送到名为upload.php的PHP文件。这是upload.php

的内容
if(isset($_FILES['csv-file'])){
    echo 'found file';
} else echo 'no file';

每次都会返回no file,我不知道为什么。

如果我要尝试不同的变量类型,如字符串或整数,这将起作用,但当我尝试通过文件变量时,它不起作用。为什么是这样?如何使用.load()将文件传到我的php?

1 个答案:

答案 0 :(得分:0)

实际上,你无法以这种方式上传带有Ajax的文件,因为.serialize()只能为你提供文件名。

使用FormData:

$('.upload-button').click(function() {
var formData = new FormData($('form')[0]);
$('.upload-output').load('upload.php', formData); });

另见:Sending multipart/formdata with jQuery.ajax

并且:How can I upload files asynchronously?