簡體   English   中英

如何將POST請求發送到另一個服務器綁定文件到formdata

[英]How can I send the POST request to the other server binding file into formdata

我有一個使用我的服務器端代碼生成到我的本地服務器中的pdf文件。 我想向另一個服務器發送請求POST post方法采用參數作為FormData ,其中formdata類型

一個是string ,另一個是file類型。

content-type
form-data
Body
  PDF file (file type)
   string value
  

是否可以在不瀏覽文件位置的情況下發出POST請求?

進行一些研發工作我已經通過一些步驟解決了這個問題,因為除了出於安全原因瀏覽之外,沒有其他方法可以從客戶端的物理位置自動獲取文件對象(基本上是在js中)。

  1. 在我的本地服務器上,我創建了一個REST服務。 哪個響應所需文件的base64 string
  2. 比起我從javaScript調用REST api ,作為響應,我收到了base64 string 然后我將其轉換為bytes arrayBlob對象和File對象。

    base64字符串==>字節數組==> Blob對象==>文件對象

     var base64 = this.getpdfFromLocal() //get the base64 string var byteArray= this.base64ToByte(base64 ); var file = this.getFileFromByteArray(byteArray); //return the byte array form the base64 string MyApi.prototype.base64ToByte= function(base64) { var binaryString = window.atob(base64); var binaryLen = binaryString.length; var bytes = new Uint8Array(binaryLen); for (var i = 0; i < binaryLen; i++) { var ascii = binaryString.charCodeAt(i); bytes[i] = ascii; } return bytes; }; MyApi.prototype.getFileFromByteArray=function(byteArray) { var blob = new Blob([byteArray]); var file = new File([blob], "resource.pdf"); return file; }; 
  3. 最后,我使用文件對象from data ,並向另一個服務器REST Web服務發送請求。

     var formdata = new FormData(); formdata.append("some_value", "Some String"); formdata.append("file", file); var url = "http://yoururl.com"; var result =$.ajax({ url : url , type : 'POST', data : formdata, contentType : false, cache : false, processData : false, scriptCharset : 'utf-8', async : false }).responseText; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM