關於multipart/form-data不能提交嵌套JSON對象


需求:vue+iview 使用upload上傳文件,同時還要提交簡單的鍵值對和復雜嵌套的數

簡單的這樣格式是可以的

     upoladData: {
          'opUserId': id,
          'opUserName': name,
     },

但是這樣的格式 是會報錯的

    upoladData: {
          'opUserId':id,
          'opUserName': name,
          'otherData':{
              'code': codes
          }
        },

 

 

 

 

 

Ajax請求發送的FormData是"[object object]"

但是processData 這個屬性 屬於jquery下面的ajax的屬性。

然后看了view upload 的源碼 發現 使用的是XMLHttpRequest.send() ,參數都是轉換成為 FormData 

 

 

FormData 模擬提交包含簡單鍵值對和文件的Form表單時,如果是post請求,數據會以鍵值對形式被放在請求體中。這樣是沒有問題的

 upoladData: {
          'opUserId': id,
          'opUserName': name,
 },

但是對象里面再嵌套對象

 upoladData: {
          'opUserId':id,
          'opUserName': name,
          'otherData':{
              'code': codes
          }
        },

 

這樣提交以后,后端接收到的projection是object,無法解析出projection的值。原因是multipart/form-data本來就只能發送文件和不嵌套的鍵值對

解決:把需要嵌套的json數據在發送前用JSON.stringfy()方法轉為json字符串,放入form表單中,就可以了。

         let otherData = {
              'code': codes
          }
        upoladData: {
          'opUserId':id,
          'opUserName': name,
          'otherData':JSON.stringify(otherData)
        },    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM