zoukankan      html  css  js  c++  java
  • 使用FormData,进行Ajax请求并上传文件

    注意FormData并不支持IE9以下浏览器

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

    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) {});

    第二种,使用HTML表单来初始化一个FormData对象

    HTML部分

    <form id= "uploadForm">  
          <p >指定文件名: <input type="text" name="filename" value= ""/></p >  
          <p >上传文件: <input type="file" name="file"/></ p>  
          <input type="button" value="上传" onclick="doUpload()" />  
    </form>  

    JS部分

    function doUpload() {  
         var formData = new FormData($( "#uploadForm" )[0]);
         formData.append('num', '1');//可以在已有表单数据的基础上,继续添加新的键值对
         $.ajax({  
              url: 'http://localhost/file/upload' ,  
              type: 'POST',  
              data: formData,  
              async: false,  
              cache: false,  
              contentType: false,  
              processData: false,  
              success: function (returndata) {  
                  alert(returndata);  
              },  
              error: function (returndata) {  
                  alert(returndata);  
              }  
         });  
    } 

     注:

    • processData设置为false。因为data值是FormData对象,不需要对数据做处理。
    • cache设置为false,上传文件不需要缓存
    • contentType设置为false
  • 相关阅读:
    【题解】 P1373 小a和uim之大逃离
    题解 CF576C 【Points on Plane】
    题解 P4799 【[CEOI2015 Day2]世界冰球锦标赛】
    【题解】[JSOI2008]最大数
    题解 P3389 【【模板】高斯消元法】
    【模板】矩阵加速
    【模板】树状数组上的差分数组
    tarjan求强连通分量(模板)
    我好菜系列——map查找
    trie树的应用;
  • 原文地址:https://www.cnblogs.com/wangdahai/p/6845719.html
Copyright © 2011-2022 走看看