【发布时间】:2016-10-12 05:04:31
【问题描述】:
我正在开发一个网络应用程序,我尝试在其中显示从服务器请求的 TIFF 文件。我使用this approach 显示 TIFF 文件,但我需要通过 GET 请求从服务器获取图像,而不是从本地计算机打开文件。
在服务器端,我使用 Spark-Java 框架来发送响应。这是用于此目的的 Java 代码:
get("tiff", (request, response) -> {
byte[] bytes = Files.readAllBytes(Paths.get("temp/201600004068.tif"));
HttpServletResponse raw = response.raw();
raw.setContentType("image/tiff");
raw.getOutputStream().write(bytes);
raw.getOutputStream().flush();
raw.getOutputStream().close();
return raw;
});
我不知道如何在 JavaScript 中处理响应(响应中的输入流)来读取带有FileReader() 的文件。
$.get( "/tiff", function( data ) {
var parentEl = $(this).parent();
var fr = new FileReader();
fr.onload = function(e) {
//Using tiff.min.js library - https://github.com/seikichi/tiff.js/tree/master
console.debug("Parsing TIFF image...");
//initialize with 100MB for large files
Tiff.initialize({
TOTAL_MEMORY: 100000000
});
var tiff = new Tiff({
buffer: e.target.result
});
var tiffCanvas = tiff.toCanvas();
$(tiffCanvas).css({
"max-width": "1000000px",
"width": "100%",
"height": "auto",
"display": "block",
"padding-top": "10px"
}).addClass("preview");
$(parentEl).append(tiffCanvas);
}
fr.onloadend = function(e) {
console.debug("Load End");
}
fr.readAsArrayBuffer(data); });
当我尝试将响应直接放入 fr.readAsArrayBuffer(data); 时,出现错误 Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'。
当我尝试根据响应创建 Blob 时
var blob = new Blob([data], {type: 'image/tiff'});
fr.readAsArrayBuffer(blob);
它无法解析 TIFF 文件。
我的回复是这样的:
我不明白那个回复的含义。
那么我如何从这个响应中检索文件?
感谢您的帮助!
【问题讨论】:
-
请张贴您回复的标题。
-
常规:请求 URL:localhost:4567/tiff 请求方法:GET 状态码:200 OK 远程地址:[::1]:4567
-
响应头:Content-Type:image/tiff Server:Jetty(9.0.2.v20130417) Transfer-Encoding:chunked
-
请求标头:Accept:*/* Accept-Encoding:gzip, deflate, sdch Accept-Language:en-US,en;q=0.8 Cache-Control:max-age=0 Connection:keep -alive Host:localhost:4567 Referer:localhost:4567 User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 X-Requested-With:XMLHttpRequest跨度>
-
我的猜测是响应常量类型错误,但它设置为 image/tiff。
标签: javascript java jquery spark-java