2013-05-21 2 views
0

을 다운로드 할 때 내가하는 DOCX을 업로드 할 파일을 SDK .net의 AWS를 사용하여 아마존 S3에 XLSX 또는 PPTX 때 손상된 MS 오피스 파일을 잘 업로드지고 난 문제없이 S3에서 직접 파일을 볼 수 있어요. 그러나 C#을 사용하여 ASP.net에서 파일을 다운로드 할 때 파일을 열 때 경고 메시지 (아래 참조)가 표시됩니다.아마존 S3 -

"Excel에서 test.xlsx에서 읽을 수없는 내용을 발견했습니다.이 파일의 내용을 복구 하시겠습니까? 학습장?" 예를 클릭하면 문서의 모든 내용을 볼 수 있습니다.

유사 나뿐만 아니라 .DOCX 파일에 대한 경고 메시지를 받고 있습니다.

은 내가 사용하고 C# 코드입니다 :

Response.Clear(); 
Response.ContentType = "application/octet-stream"; 
Response.AddHeader("content-disposition", "attachment; filename=" + fileName); 
Response.OutputStream.Write(Content, 0, Content.Length); 
Response.Flush(); 

HttpContext.Current.ApplicationInstance.CompleteRequest(); 

업데이트 : 나는 창에서 파일을 다운로드 할 때 형태가 잘 작동하고 문제가 웹 응용 프로그램 만 함께 응용 프로그램.

내가 뭘 잘못하고 있니?

도와주세요은 ...

답변

0

자세한 내용은이 문제를 파악하기 위해 필요합니다. 제공 한 코드 스 니펫이 정상적으로 보입니다. 문제는 코드의 다른 부분에있는 것처럼 보입니다. 예를 들어, "컨텐츠"안에 무엇을로드하고 있습니까? 당신이 추가됩니다 어떤 종류의 데이터보고, 업로드하고 간단한 텍스트 파일을 다운로드하려고하면

또한, 도움이 될 것이다. ContentMemoryStream에서 만든 byte[] 경우

+0

은 "콘텐츠"바이트 [] 아무것도없고 문제 만 .DOCX, .XLSX &의 .pptx 파일을 발생, 다른 파일은 잘 될 것 같다. – user972255

0

, 당신이 그것을 얻을 .ToArray()하지 .GetBuffer()를 호출하고 있는지 확인하십시오. 당신이 .GetBuffer()를 사용하는 경우, 당신은 잠재적으로 오피스 파일 형식은 아마 좋아하지 않는 말에 추가 바이트를 얻을 수 있습니다. 시도한 다른 파일 형식은 결국 예상하지 못했던 추가 데이터에보다 관대 할 수 있습니다.

+0

예, .ToArray() 만 사용하고 있습니다. – user972255