0
서블릿에 자바 스크립트 단어 addin을 통해 2013 docx라는 단어를 보냅니다. 그러나 스트림을 파일에 쓰고 나면 pdf/word (압축 형식) 파일이 손상되어 크기가 다릅니다. 그것은 더 많은 바이트를 가지고 있습니다. js 출력에서 slice.value.size는 말해줍니다 (이것은 hdd에 파일을 저장할 때 같은 크기를 보여줍니다). FormData와 Apache Fileupload를 사용하면 동일한 결과를 얻을 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.XHR을 통해 파일을 업로드하고 파일에 스트림을 작성하십시오.
JS :
function sendDoc(){
Office.context.document.getFileAsync("pdf",
function (result) {
if (result.status == Office.AsyncResultStatus.Succeeded) {
var myFile = result.value;
myFile.getSliceAsync(0, function (slice) {
if (slice.status == Office.AsyncResultStatus.Succeeded) {
showMessage("sending (" + slice.value.size + " bytes)");
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4) {
myFile.closeAsync(function (r) {
if (r.status == Office.AsyncResultStatus.Succeeded) {
showMessage("sent");
}else {
showMessage("error");
}
});
}
}
request.open("POST", "myserver");
request.send(slice.value.data);
}else {
showMessage(slice.status);
}
});
} else {
showMessage(result.status);
}
});
}
서블릿 :
public void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
InputStream in = request.getInputStream();
FileOutputStream out = new FileOutputStream("c:/temp/test.pdf");
IOUtils.copy(in, out);
in.close();
out.close();
} catch (Exception e) {
log.error(e.getMessage());
}
}