2012-12-21 1 views
2

중복 가능성이 있으므로 나와 함께 숙여주세요.byte []를 다운로드 대화 상자가있는 파일로 변환하는 방법은 무엇입니까?

다른 파일 형식을 저장하는 블롭 (blob) 콘텐츠가있는 테이블이 있습니다 (text, audio, image, etc). byte []을 성공적으로 검색 한 후에는 다운로드 대화 상자로 변환하는 것과 같은 방법으로 []를 변환하는 방법을 알지 못합니다.
여기 내 코드

trns = session.beginTransaction(); 
Query query = session.createQuery("from FileDownload as fu where fu.Id =:Id"); 
query.setInteger("Id", id); 
FileDownload fileDownload = (FileDownload) query.iterate().next(); 
byte[] byteArray = fileDownload.getFile(); 

위의 코드는 잘 작동하고 나는 byte []을받을 수 있습니다. 그러나 대화 상자가 나타나는 파일로 변환하기 위해 더 진행하는 방법을 모르겠습니다.

아무도 도와 줄 수 있습니까?

+0

이미 바이트가 [] 인 경우 최대 절전 모드 나 다른 곳에서 온 경우 관련이 없습니다. – SJuan76

+0

팁 주셔서 감사합니다. 최대 절전 모드 태그를 제거했습니다. – Freakyuser

+0

답을 얻을 때 질문에 대한 답을 더 잘 나타내려면 나중에이 질문/답변을 찾는 데 도움이 될 수 있습니다. –

답변

10

파일의 mimeTypefilename을 알고 있다고 가정하면 콘텐츠 형식과 HTTP 헤더 Content-Disposition을 설정할 수 있습니다.

// The response from your servlet. 
    HttpServletResponse resp; 
    resp.setContentType(mimeType); 
    resp.setHeader("Content-Disposition", "attachment;filename=" + filename); 
    resp.getOutputStream().write(byteArray); 
+0

답변 해 주셔서 감사합니다. 'mimeType'에 관해서, 우리는 파일 이름없이 그것을 얻을 수 있습니까? – Freakyuser

+1

mimeType 또는 Content-Disposition 헤더 만 사용할 수 있습니다. 그러나 파일 이름이 없으면 파일의 mimeType을 찾는 것이 매우 어렵습니다 (파일 이름이 반드시 정확하지는 않습니다). 일반적으로 파일 이름 접미사 (JPG, WAV, MP3 등)를 기반으로 mimeType을 "추측"하고 파일 데이터와 함께 저장합니다. –

+2

아니요, MIME 형식을 "추측"하지 않습니다. 파일 이름 만 보면 추측 게임입니다. 대신에 매직 바이트, 즉 파일의 처음 몇 바이트를 확인해야합니다. 복잡하지만 지루한 일이 아닙니다. https://sourceforge.net/projects/jmimemagic/ 또는 https://sourceforge.net/projects/mime-util/을 참조하십시오. –

1

바이트 배열이 서블릿에서 클라이언트로 전송 할 수 있습니다

는 그냥 OutputStream 바이트 배열을 작성합니다. 여기 및 다른 주제에 대한 많은 토론을 찾을 수 있습니다.

여기에 efficiency of streaming (코드 포함)에 대해 논의하는 사람들이 있습니다. map the servlet to a url (예문 포함)에 대한 토론이 있습니다.

마지막으로해야 할 일은 단추를 클릭 할 때 사용자를 서블릿의 URL에 연결하는 것입니다.

또한 바이트 배열을 스트리밍하기 전에 헤더에서 제공 할 수있는 추가 정보를 조사하고 싶을 것입니다. 예를 들어 MIME 형식을 제공하면 브라우저에서 파일에 대한 처리 방법을 알 수 있습니다. 브라우저에서 PDF를 열고 브라우저에 이미지를 표시합니다. Excel에서 xls 파일을 엽니 다.

+0

답장을 보내 주셔서 감사합니다. – Freakyuser

관련 문제