zoukankan      html  css  js  c++  java
  • Ajax使用formdata异步上传文件,报错the request was rejected because no multipart boundary was found

    原文:https://www.itread01.com/content/1526126668.html

    基於jQuery的Ajaxs使用FormData上傳文件要註意兩個參數的設定

    processData設為false

    把processData設為false,讓jquery不要對formData做處理,如果processData不設置為false,jquery會把formData轉換為字符串。

    contentType設為false

    http發送multipart/form-data請求報文示例

    POST /api/feed/ HTTP/1.1
    Accept-Encoding: gzip
    Content-Length: 225873
    Content-Type: multipart/form-data; boundary=OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp
    Host: www.myhost.com
    Connection: Keep-Alive
    
    --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp
    Content-Disposition: form-data; name="lng"
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    116.361545
    --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp
    Content-Disposition: form-data; name="lat"
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    39.979006
    --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp
    Content-Disposition: form-data; name="images"; filename="/storage/wbavrx.jpg"
    Content-Type: application/octet-stream
    Content-Transfer-Encoding: binary
    
    這裏是圖片的二進制數據
    --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp--

    註意Content-Type: multipart/form-data; boundary=OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp,參數boundary為請求參數之間的界限標識。

    如果jquery請求設置了contentType,那麽就會覆蓋了formData的content-type,導致服務器在分隔參數和文件內容時是找不到boundary,報no multipart boundary was found錯誤

    默認情況下jquery會把contentType設置為application/x-www-form-urlencoded。要jquery不設置contentType,則需要把contentType設置為false。

    var formData = new FormData($("#uploadform")[0]);
    $.ajax({
        url: actionUrl,
        type: ‘POST‘,
        data: formData,
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        ...
    });
  • 相关阅读:
    ElasticSearch常见经典面试题
    系统剖析Android中的内存泄漏
    Android Studio在导入eclipse的项目时一直卡在gradle:Configure project
    记录Android Studio项目提交到github上的出错处理
    如何将Android Studio项目提交(更新)到github
    MOB 短信验证
    mob免费短信验证码安卓SDK调用方法
    Git的安装与使用
    svn代码提交注意事项
    Fragment详解之三——管理Fragment(1)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/10410562.html
Copyright © 2011-2022 走看看