서버에서 요청한 TIFF 파일을 표시하려는 웹 응용 프로그램을 개발 중입니다. 이 방법 을 사용 하여 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;
});
.NET으로 파일을 읽기 위해 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 파일을 구문 분석 할 수 없습니다.
내 응답은 다음과 같습니다.
그리고 나는 그 응답의 의미를 이해하지 못합니다.
그렇다면이 응답에서 파일을 어떻게 검색합니까?
도움을 주셔서 감사합니다!
Sandeep의 답변을 기반으로 내 질문의 목표를 달성했습니다. 소스 폴더에서 읽는 대신 서버의 원시 응답을 읽기 위해 XMLHttpRequest ()를 사용할 수 있습니다.
따라서 javaScript에서 이미지를 요청하십시오.
var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('get', "/image?imageName=" + imageName);
xhr.onload = function ( e ) {
Tiff.initialize({
TOTAL_MEMORY: 100000000
});
var tiff = new Tiff({
buffer: arrayBuffer
});
*//...Any manipulation with tiff file*
};
xhr.send();
서버 측에서 요청을 처리하고 원시 응답을 반환합니다.
get("/image", (request, response) -> {
String imageName = request.queryParams("imageName");
response.raw().setContentType("image/tiff");
response.raw().setHeader("Content-Disposition","attachment; filename=image.tiff");
Path path = Paths.get(IMAGE_DESTINATION + "/" + imageName);
byte[] data = null;
try {
data = Files.readAllBytes(path);
} catch (Exception e) {
e.printStackTrace();
}
OutputStream out = response.raw().getOutputStream();
out.write(data);
out.flush();
out.close();
return response.raw();
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다