9
파일 다운로드를 위해 간단한 휴식 API를 작성하고 싶습니다.자바 스파크를 사용하여 다운로드하는 방법은 무엇입니까?
응답으로는 mimetype='application/zip'
을 설정해야하지만 스트림을 반환하는 방법은 분명하지 않다는 것을 이해하면 문서를 찾을 수 없습니다.
갱신 : 여기에 해결 예제 코드 :
public static void main(String[] args) {
//setPort(8080);
get("/hello", (request, responce) -> getFile(request,responce));
}
private static Object getFile(Request request, Response responce) {
File file = new File("MYFILE");
responce.raw().setContentType("application/octet-stream");
responce.raw().setHeader("Content-Disposition","attachment; filename="+file.getName()+".zip");
try {
try(ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(responce.raw().getOutputStream()));
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)))
{
ZipEntry zipEntry = new ZipEntry(file.getName());
zipOutputStream.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int len;
while ((len = bufferedInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer,0,len);
}
}
} catch (Exception e) {
halt(405,"server error");
}
return null;
참고 : 오류 코드'4xx'는 클라이언트 오류이며 일반적으로 '5xx' 서버 오류가 아닙니다. – scrutari