2013-08-23 3 views
8

이것은 내 코드이며 docx 파일을 다운로드 할 때까지 노력하고 있습니다. 그러나 성공은 없습니다. 내가 뒤처질 수있는 곳에서는 약간의 힌트가 필요합니다.C#을 사용하여 docx 파일을 다운로드 할 수 없습니다.

if (File.Exists(sTempPath + sCreateFileName)) 
      { 
       FileInfo file =new FileInfo(sTempPath + sCreateFileName); 
       Response.ClearContent(); 
       // LINE1: Add the file name and attachment, which will force the open/cancel/save dialog to show, to the header 
       Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
       // Add the file size into the response header 
       Response.AddHeader("Content-Length", file.Length.ToString()); 
       // Set the ContentType       
       Response.ContentType = ReturnExtension(file.Extension.ToLower()); 
       // Write the file into the response (TransmitFile is for ASP.NET 2.0. In ASP.NET 1.1 you have to use WriteFile instead) 
       Response.TransmitFile(sTempPath + sCreateFileName); 
       // End the response 
       HttpContext.Current.ApplicationInstance.CompleteRequest(); 
      } 

및 반환 콘텐츠 형식은 DOCX 파일, 콘텐츠 유형을 제공합니다

"application/ms-word" 

곳 sTempPath + sCreateFileName 파일의 전체 경로 인 경우. 이 작동하지 않는

application/vnd.openxmlformats-officedocument.wordprocessingml.document 

:

업데이트 : 나는 콘텐츠 형식을 시도했다.

+1

어떤 오류가 있습니까? –

+0

콘텐츠 형식을'application/vnd.openxmlformats-officedocument.wordprocessingml.document'로 시도하십시오 – Damith

+0

오류는 없지만 파일이 다운로드되지 않습니다. –

답변

8

DOCX의 올바른 MIME 유형은 application/msword이 아니라 application/vnd.openxmlformats-officedocument.wordprocessingml.document입니다.

지정한 MIME 형식이 DOC 파일 용입니다.

CompleteRequest() 대신 Response.Flush()Response.End()을 넣을 수도 있습니다.

+0

이것은 또한 작동하지 않습니다, 나는 똑같은 노력을했습니다. –

+0

Iti, 답장을 수정했습니다. –

+0

이 코드는 작동하지만 이전 코드는 작동하지만 버튼 클릭에는 작동하지 않지만 페이지로드에는 작동합니다. 왜 이런 일이 일어나고있는 거지? –

2

이 코드

string FileName = Path.Combine(Server.MapPath("~/physical folder"), attFileName); 
      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 

    Response.AddHeader("Content-Disposition", string.Format("attachment; filename = \"{0}\"", System.IO.Path.GetFileName(FileName))); 
      response.TransmitFile(FileName); 
      response.Flush(); 
      response.End(); 
+0

감사합니다. Syed가 완료되었습니다. –

1

저도 같은 문제를 겪고을보십시오. 나를 위해 그것이 작동합니다 :

using (FileStream fileStream = File.OpenRead(filePath)) 
{ 
    MemoryStream memStream = new MemoryStream(); 
    memStream.SetLength(fileStream.Length); 
    fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length); 

    Response.Clear(); 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=myfile.docx"); 
    Response.BinaryWrite(memStream.ToArray()); 
    Response.Flush(); 
    Response.Close(); 
    Response.End(); 
} 
관련 문제