我想通过POST方法发送文件名,进行XMLHttpRequest,然后在浏览器中打开PDF。
xmlhttp.open("POST","pdf.php",true); //CHANGE
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("file="+input);
这是可能的,XMLHttpRequest不仅适用于HTML。
我想通过POST方法发送文件名,进行XMLHttpRequest,然后在浏览器中打开PDF。
xmlhttp.open("POST","pdf.php",true); //CHANGE
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("file="+input);
window.location.href = new_pdf_url
通过更改iframe的src
属性,在当前文档内部加载它window.open(new_pdf_url, XXX)
在单独的窗口中打开它window.open('pdf.php?file='+input, XXX)
呢? - DVK如果您在同一窗口中打开PDF,则使用XmlHttpRequest没有意义,只需从JavaScript中设置window.location(window.location.assign("http://example.com/location/file.pdf")
,window.location.href="http://etc
),而不是调用XmlHttpRequest。
(如果您已经从XmlHttpRequest接收到PDF字节,那么您如何说服浏览器使用PdfPluginX显示它呢?)
如果您想在新的浏览器窗口中打开PDF,请直接从JavaScript中使用window.open(...)
。
是的,这是可能的。首先,您需要将文件作为arrayBuffer获取,然后使用新blob创建一个对象URL,最后将其分配给src。
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.type = 'arraybuffer';
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200){
var blobSrc = window.URL.createObjectURL(new Blob([this.response], { type: 'application/pdf' }));
// assign to your iframe or to window.open
yourIframe.src = blobSrc;
}
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var file = window.URL.createObjectURL(xmlHttp.response);
var a = document.createElement("a");
a.href = file; window.open(file);
}
}
xmlHttp.open("GET", '/pdf', true); // true for asynchronous xmlHttp.responseType= "blob";
xmlHttp.send(null);