장시간 숨어있는 첫 번째 포스터입니다. 몇 년 동안 .Net/Linq로 작업 했으므로 여기서 뭔가를 놓치고 있다고 확신합니다. 수많은 시간 동안 연구 끝에 도움이 필요합니다. https : http://damieng.com/blog/2010/01/11/linq-to-sql-tips-and-tricks-3FileWriteAllBytes 대신 파일 저장 프롬프트
다음 코드는 현재 SQL 데이터베이스에 저장된 선택한 파일 (C : \ temp)을 저장합니다. 훌륭하게 작동합니다. 나는 한 걸음 더 나아가고 싶다. 자동으로 c : \ temp에 저장하는 대신 원하는 위치에 저장할 수 있도록 브라우저 프롬프트를 표시 할 수 있습니다.
{
var getFile = new myDataClass();
//retrieve attachment id from selected row
int attachmentId = Convert.ToInt32((this.gvAttachments.SelectedRow.Cells[1].Text));
//retrieve attachment information from dataclass (sql attachment table)
var results = from file in getFile.AttachmentsContents
where file.Attachment_Id == attachmentId
select file;
string writePath = @"c:\temp";
var myFile = results.First();
File.WriteAllBytes(Path.Combine(writePath, myFile.attach_Name), myFile.attach_Data.ToArray());
}
그래서 대신 내가 대신 내 LINQ 쿼리 (의 myFile)에서 반환 된 데이터를 가지고 사용자가 대신에 파일을 저장을 묻는 메시지 무언가에 전달할 수 File.WriteAllBytes를 사용하고 계십니까?
). 이 반환 된 객체를 response.transmitfile과 함께 사용할 수 있습니까? 정말 고마워.
완벽하게 작동했습니다. 정말 고마워! – DysonGuy
나는 총을 뛰어 넘었다! 다운로드 한 파일을 열면 손상되었습니다. 나는 docx와 doc 모두 시도했다. 테스트 목적으로 File.WriteAllBytes 코드를 제 위치에 두었고 c : \ temp의 문서를 열면 잘 열립니다. 그래서 나는 여전히 뭔가를 놓치고있다. Response.Write (myFile.attach_Data.ToArray()); – DysonGuy
해결책을 찾기 위해 Response.BriteWrite를 Response.BinaryWrite로 변경했습니다. doc 파일과 pdf 파일은 이제는 docx가 잘 돌아 가지 않아도 괜찮습니다. – DysonGuy