2012-03-05 2 views
0

Я использую webmethod для загрузки ZIP-файла, но файл не загружается. мой код хорошо работать без ошибок, код ниже:
файл не загружен в webmethod

[WebMethod] 
    public static void DownloadExtension(string ExtensionPath) 
    { 
     string filepath = HttpContext.Current.Server.MapPath(ExtensionPath); 
     FileInfo file = new FileInfo(filepath); 
     if (file.Exists) 
     { 
      HttpContext.Current.Response.ClearContent(); 
      HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
      HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString()); 
      HttpContext.Current.Response.ContentType = ReturnExtension(file.Extension.ToLower()); 
      HttpContext.Current.Response.TransmitFile(file.FullName); 
      HttpContext.Current.Response.End(); 
     } 
    } 

    private static string ReturnExtension(string fileExtension) 
    { 
     switch (fileExtension) 
     {    
      case ".zip": 
       return "application/zip"; 
      default: 
       return "application/octet-stream"; 
     } 
    } 


я использую VS2008 любое решение спасибо.

ответ

1

и может попробовать этот method..it работал нормально для меня ... надеюсь, что это поможет вам ..

  protected void Page_Load(object sender, EventArgs e) 
{ 
    StartZip(Server.MapPath("directory name"), "filename");  
} 

protected void StartZip(string strPath, string strFileName) 
{ 
    MemoryStream ms = null; 
    Response.ContentType = "application/octet-stream"; 
    strFileName = HttpUtility.UrlEncode(strFileName).Replace('+', ' '); 
    Response.AddHeader("Content-Disposition", "attachment; filename=" + strFileName + ".zip"); 
    ms = new MemoryStream(); 
    zos = new ZipOutputStream(ms); 
    strBaseDir = strPath + "\\"; 
    addZipEntry(strBaseDir); 
    zos.Finish(); 
    zos.Close(); 
    Response.Clear(); 
    Response.BinaryWrite(ms.ToArray()); 
    Response.End(); 
} 

protected void addZipEntry(string PathStr) 
{ 
    DirectoryInfo di = new DirectoryInfo(PathStr); 
    foreach (DirectoryInfo item in di.GetDirectories()) 
    { 
     addZipEntry(item.FullName); 
    } 
    foreach (FileInfo item in di.GetFiles()) 
    { 
     FileStream fs = File.OpenRead(item.FullName); 
     byte[] buffer = new byte[fs.Length]; 
     fs.Read(buffer, 0, buffer.Length); 
     string strEntryName = item.FullName.Replace(strBaseDir, ""); 
     ZipEntry entry = new ZipEntry(strEntryName); 
     zos.PutNextEntry(entry); 
     zos.Write(buffer, 0, buffer.Length); 
     fs.Close(); 
    } 
} 
1

Попробуйте загрузить файл через файл обработчика .ashx.

Смежные вопросы