尝试使用AJAX上载文件时,FormData对象始终为空

瓦济姆

当尝试使用AJAX上传图像而不直接提交表单并将FormData对象发送到服务器时,它将返回空$_FILES数组。但是,如果我使用<input type="submit">标签$_FILES数组提交表单,则该字段不为空并且接收数据。

的HTML

<form action="core/update.php" method="post" enctype="multipart/form-data" id="profile-photo" name="profile-photo-form">
  <input type="file" id="photo-filename" name="avatar" class="edit-show panel photo-upload">
</form>
<button class="save-button" disabled="disabled">Save</button>

JS

$('#profile-photo').on('submit', function(e) {
    e.preventDefault();

    var form = $('#profile-photo')[0];
    var formData = new FormData(form);

    formData.append('avatar', $('#photo-filename')[0].files[0]);

    $.ajax({
      url: "core/update.php", 
      data: formData,
      type: "POST", 
      contentType: false,       
      cache: false,             
      processData: false
    });

    console.log(formData);
});

$('.save-button').on('click', function() {
    if ($('#photo-filename').val != '') {
        $('#profile-photo').submit();
    };
}

UPD

$('#profile-photo').serialize()返回空白字符串。

UPD 2

它可以与页面上的其他AJAX请求冲突吗?

PHP蠕虫...

尝试这个:

因为用户可能会上传多个文件

jQuery.each(jQuery('#photo-filename')[0].files, function(i, file) {
    data.append('file-'+i, file);
});

代替

formData.append('avatar', $('#photo-filename')[0].files[0]);

完整的解决方案:

$('#profile-photo').on('submit', function(e) {
    e.preventDefault();

var form = $('#profile-photo')[0];
var formData = new FormData(form);

 jQuery.each(jQuery('#photo-filename')[0].files, function(i, file) {
    formData.append('file-'+i, file);
});

$.ajax({
  url: "core/update.php", 
  data: formData,
  type: "POST", 
  contentType: false,       
  cache: false,             
  processData: false
});

    console.log(formData);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Jersey上载文件时设置文件大小限制

尝试在其中添加值时Javascript FormData为空

上载某些文件时,$ _ FILES和$ _POST数据为空

通过Ajax提交表单-FormData始终为空

使用FormData和multer上载文件

Symfony2:使用Ajax和jQuery上载文件

上载未保存的文件时“尝试获取非对象的属性”

上载文件时,CORS失败

当在iOS上未选择文件时,使用FormData和jQuery的ajax进行上载文件的JavaScript返回错误500

Ajax文件上载处理程序在请求时始终为零

如何在Vue中使用FormData()上载文件

在Postman上使用Ajax上载文件,但在浏览器上不上载

尝试使用Flask上载文件以在AWS S3上处理时不允许使用405方法

上载文件时无法发送空消息

尝试使用multer上载文件时,为什么req.file对我来说“未定义”?

尝试使用boto3从创建时使用的同一脚本上载文件,但出现错误:无此类文件或目录

上载文件时内存不足

上载文件时显示进度栏

上载文件时为其赋予唯一名称

使用jQuery ajax()时FormData为空

当我尝试使用php下载文件时文件为空

上载内容为空的文件

上载文件时,为文档创建一个文件夹以放入PHP

通过ajax上载多个文件,多次上载文件

django-使用ajax上载文件失败

尝试基于信任级别上载文件时出现System.Security.Permissions.FileIOPermission错误

尝试使用获取 AttributeError 的 Python FTP_TLS 对象下载文件时?

使用 FormData() 时发布请求时请求正文为空

使用 ftplib 从 FTP 服务器下载文件:始终为 0 字节/空