通过Ajax使用FormData对象无刷新上传文件

有两种方式可以创建一个FormData对象:

  ①创建一个空的FormData对象,然后使用append()方法向该对象里添加字段

  ②使用HTML表单来初始化一个FormData对象

下面分别介绍一下:

  第一种方式:

var oMyForm = new FormData();
oMyForm.append("username", "Groucho");
oMyForm.append("accountnum", 123456); 
oMyForm.append("file", $('#file')[0].files[0]);

$.ajax({
    url: '/Manage/UploadImg',
    type: 'POST',
    cache: false,
    data: oMyForm,
    processData: false,
    contentType: false,
    async: false
}).done(function(res) {}).fail(function(res) {});


  第二种方式:

<form id="uploadForm" enctype="multipart/form-data">
    <p>指定文件名: <input type="text" name="filename" value="" /></p>
    <p>上传文件: <input type="file" name="file" /></ p>
        <input type="button" value="上传" onclick="doUpload()" />
</form>
var formData = new FormData($('#uploadForm')[0]);
formData.append('num', '1');//可以在已有表单数据的基础上,继续添加新的键值对
$.ajax({
    url: '/upload',
    type: 'POST',
    cache: false,
    data: new FormData($('#uploadForm')[0]),
    processData: false,
    contentType: false
}).done(function(res) {}).fail(function(res) {});

 

注意:

    Ajax的processData设置为false。因为data值是FormData对象,不需要对数据做处理。
        第二种方式中<form>标签加enctyp  e="multipart/form-data"属性。
    cache设置为false,上传文件不需要缓存。
    contentType设置为false。因为是由<form>表单构造的FormData对象,且已经声明了属性enctype="mutipart/form-data",所以这里设置为false。

转自:http://www.cnblogs.com/zzgblog/p/5417969.html

posted @ 2017-10-25 09:48  江湖丶丿新进程  阅读(280)  评论(0)    收藏  举报