javascript - 在html5中jquery如何用ajax上传文件
黄舟
黄舟 2017-04-10 12:42:23
[JavaScript讨论组]

现在最新的firefox和chrome都已经支持用FormData来自定义multipart/form-data的具体字段,这样用ajax上传文件就成了可能,但我在使用最新版jquery的ajax方法上传文件时,却遇到了问题,jquery默认设置的contentType不对,导致后端无法正确识别文件上传请求

这是使用原生XHR来上传文件时的header截图,我们可以清楚的看到Content-Type已经做了特殊设定,这时后端可以正确的接收到文件

这是使用jQuery上传的截图,可以看到Content-Type是普通的表单提交,后端完全无法识别这次请求

下面是我的代码,不知道是什么问题
http://jsfiddle.net/aejUC/

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
伊谢尔伦

contentType: false // 告诉 jQuery 别设置内容类型

var fd = new FormData(document.getElementById("fileinfo"));
fd.append("CustomField", "This is some extra data");
$.ajax({
  url: "stash.php",
  type: "POST",
  data: fd,
  processData: false,  // tell jQuery not to process the data
  contentType: false   // tell jQuery not to set contentType
});

https://developer.mozilla.org/en-US/d...

PHP中文网

是不是可以加上jQuery的配置:

$('#jquery').submit(function () {
    var formData;

    formData = new FormData();
    formData.append('file', $('input[name=file]', this).get(0).files[0]);

    $.ajax({
        url: '/',
        contentType:"multipart/form-data",
        data: formData,
        processData: false,
        type: 'POST'
    });
    
    return false;
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号