2013-06-14 4 views
0

데이터베이스에서 문서를 다운로드하는 동안 문제가 발생했습니다.파일이 바이너리 형식으로 저장된 데이터베이스에서 파일 다운로드

현재 저는 ASP.net 프로젝트에서 일하고 있습니다. 이것이 제 첫 직업 프로젝트입니다. 데이터베이스에 저장하는 일부 문서가 있습니다. 문서 (.pdf, .doc, .png, .docx, xls, xlsx)는 형식이 지정된 이진 형식으로 저장됩니다.

Response.write를 사용하여 하나의 문서를 다운로드 할 수 있습니다. 하지만 이제는 일부 문서를 연결 한 다음 사용자가 버튼 클릭으로 다운로드 할 수 있도록해야합니다.

나는 많은 것을 봤어. 개발자는 이것이 불가능하다고 말했습니다. 그러나 아직도 나는 이것이 행해질 수 있다고 느낍니다.

그러나 이것이 불가능하다면 나는이 개별 문서를 먼저 일부 서버 위치에 저장 한 다음 압축하여 사용자가 다운로드 할 수 있다고 생각합니다. 하지만 어떻게 서버 위치에 원래 형식으로 개별 문서를 저장할 수있을 것입니다.

도와주세요. 나는 큰 문제에 봉착 해있다.

+0

파일을 압축하는 것은 길 일 것 같습니다. 데이터베이스에서. 서를 검색하고, 데이터베이스에서 지정한. 서 유형으로 변환하여 ZIP 파일에 추가 할 수 있습니다. 파일의 크기에 따라 메모리에서이 작업을 수행하고 ZIP 파일을 사용자에게 제공 할 수 있습니다. 그렇지 않으면 문서를 서버의 디스크에 쓴 다음 ZIP 파일을 만들 수 있습니다. ZIP 파일을 만든 후에는 문서를 삭제하고 다운로드 한 후에 ZIP 파일을 삭제할 수 있습니다. – Stefan

답변

0

데이터베이스에서 하나 이상의 문서를 읽고 압축하여 zip 파일을 응답 스트림에 표시하는 것은 불가능하지 않습니다. 이 모든 것을 처리 할 수 ​​있기 때문에 문서를 서버에 저장할 필요가 없습니다.

foreach (var file in files) 
{ 
    zipFile.AddEntry(file.FileName, file.ContentBytes); // these are the file bytes 
} 
var zipMs = new MemoryStream(); 
zipFile.Save(zipMs); 
zipMs.Seek(0, SeekOrigin.Begin); 
zipMs.Flush(); 

file.FileName이 확장 (.DOCX) 문서의 브라우저를 통해 다운로드 할 때 포함, 모든 것이 표시되고 :

이 코드는 여러 개의 파일을 압축하고 MemoryStream에 기록하는 Ionic.Zip을 사용하여 올바르게 저장되었습니다.

+0

정말 고맙습니다 ..... 스테판과 데이빈 .... 나는 30 분 후에 그것을 시도 할 것이고 결과를 말할 것입니다. – user2485435

관련 문제