【发布时间】:2017-01-19 10:17:17
【问题描述】:
我有一个 HTTP POST REST 端点,它使用图像并返回包含图像像素数据的 HTML 文档。 HTTP 响应包含标头 Content-Disposition: attachment; filename=Pixels.html 以便浏览器提示下载。
我想要一个 HTML/JavaScript(不是 jQuery)应用程序
- 允许我浏览和选择图像(例如,
<input id="fid" name="fid" type="file" /> - 单击链接后,将图像数据发布到端点,然后让我将 HTML 内容下载到磁盘(例如,
<p onclick="javascript: getPixels()">Get Pixels</p>)。
我该怎么做呢?我尝试了以下代码:
function getPixels() {
var input = document.getElementById("fid");
if (input.files && input.files[0]) {
if (typeof (FileReader) != "undefined") {
var reader = new FileReader();
reader.onload = function (e) {
var imgData = e.target.result;
var postUrl = "./GetPixelsService.svc/image";
var xhr = new XMLHttpRequest();
xhr.open("POST", postUrl);
xhr.setRequestHeader("Content-Type", "image/png");
//xhr.onreadystatechange = function () {
// if (xhr.readyState === 4) {
// var res_display = document.getElementById("results");
// res_display.srcdoc = xhr.responseText;
// }
//}
xhr.send(imgData);
};
reader.readAsArrayBuffer(input.files[0]);
}
}
}
以下是调用上述函数的 HTML 简介。
<p>
Upload the image here:
</p>
<input id="fid" name="fid" type="file" />
<!--<button type="submit" onclick="javascript: getPixels()">Get Pixels</button>-->
<p onclick="javascript: getPixels()">Get Pixels</p>
<p />
<hr />
<p>
<img id="img2check" src="" alt="" />
</p>
<p />
<iframe id="results" style="width: 100%; border: 0; height: 400px;" src="javascript:;">
Your browser does not support iframes.
</iframe>
我能够选择响应并将其显示在 iframe 中,但无法让浏览器下载内容。
感谢您的帮助。我已经查看了 StackOverflow 上的相关问题,但到目前为止没有任何帮助。
提前致谢。
【问题讨论】:
标签: javascript html http-post content-disposition