繁体   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