C#

2013-08-23 21 views
8

kullanarak docx dosyası yüklenemedi Bu benim kodumdur ve docx dosyasını indirmek için saatlerce çalışıyorum. ama başarı yok. Nerede kalıyor olabilirim, biraz ipucu gerekir.C#

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(); 
      } 

ve İade içerik türü docx dosyası için, içerik türünü verir:

"application/ms-word" 

nerede sTempPath + sCreateFileName dosyasının bütün yolu ise. Bu işe yaramıyor

application/vnd.openxmlformats-officedocument.wordprocessingml.document 

:

Güncelleme: Ben içerik türünü denedi.

+1

Hangi hata var? –

+0

içerik türü ile uygulama/vnd.openxmlformats-officedocument.wordprocessingml.document ' – Damith

+0

olarak deneyin Hata yok, ancak dosya indirilmiyor. –

cevap

8

DOCX için doğru MIME türü application/msword değil, application/vnd.openxmlformats-officedocument.wordprocessingml.document.

Belirttiğiniz MIME türü DOC dosyaları içindir.

Ayrıca Response.Flush() ve CompleteRequest() yerine Response.End() eklemek isteyebilirsiniz.

+0

Bu da çalışmıyor, aynı şeyi denedim. –

+0

Iti, Cevabımı değiştirdim. –

+0

Bu, önceki kod çalışmalarına neden olur, ancak düğme tıklatmayla değil, sayfa yüklenmesinde çalışır. Bunun neden olduğunu anlamıyorum? –

2

Bu kodu

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

Teşekkürler Syed, şimdi bitti. –

1

Ben aynı problem vardı deneyin. Benim için şu işler:

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(); 
}