我有一个pdf文件,它使用我的服务器端代码生成到我的本地服务器中。我想向请求POST
的其他服务器发送请求。 post方法将参数作为 FormData ,其中formdata类型
一个是
string
,另一个是file
类型。
content-type
form-data
Body
PDF file (file type)
string value
是否可以在不浏览文件位置的情况下发出POST
请求?
答案 0 :(得分:0)
做一些R& D我已经通过以下步骤克服了这个问题,因为除了浏览安全原因之外,没有办法在客户端(基本上是js)自动从物理位置获取文件对象。
REST
服务。哪个回复base64 string
所需文件。比我从REST api
拨打javaScript
,作为回复,我收到了base64 string
。而且我将它转换为bytes array
而不是Blob
对象而不是File
对象。
base64 string ==> bytes array ==> Blob object ==> File object
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;
};
最后,我使用文件对象制作from data
并向另一台服务器REST
发送请求。
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;