使用fileUpload1组件获取HttpPostedFileBase?将Zip文件转换为HttpPostedFileBase

时间:2012-10-05 11:19:05

标签: c#

您好我已经创建了一个zipfile,我想在创建后上传它。

我有一种上传文件的方法,但它只接受该文件作为 HttpPostedFileBase

我的zip文件保存后如何将其更改为HttpPostedFileBase,以便我可以将其传递给我的上传方法。

using (ZipFile zip = new ZipFile())
   {
      // add this map to zip
      zip.AddFile(tempFolderPath + PropInfo[7].TagValue, "");
      zip.AddFile(tempFolderPath + "data.xml", "");
      zip.AddFile(tempFolderPath + "dvform.dvform", "");
      zip.AddFile(tempFolderPath + "CS1.pdf", "");
      zip.AddFile(tempFolderPath + "CS2.pdf", "");
      zip.AddFile(tempFolderPath + "CS3.pdf", "");
      zip.AddFile(tempFolderPath + "CS4.pdf", "");
      zip.AddFile(tempFolderPath + "CS5.pdf", "");
      zip.Save(tempFolderPath + "Tester.xap"); //Xap Save Name
    }

2 个答案:

答案 0 :(得分:1)

如果您真的想将zip文件放入HttpPostedFileBase,那么您最好的选择可能是创建一个继承自HttpPostedFileBase的类并根据需要覆盖这些方法。

要覆盖的东西并不多,从文件对象中获取它们都非常简单(它们是文件名,内容长度和内容类型以及文件流本身)。

到目前为止,最好的办法是将您的上传方法重构为不需要HttpPostedFileBase个对象。使它采用更常见的文件对象或流或类似(取决于上载需要的内容),然后创建一个覆盖HttpPostedFileBase的覆盖,并提取它需要传递给主上传方法的位。

重构上传方法可能超出了这个问题的范围。

答案 1 :(得分:0)

只是一个想法,希望你可以建立在这个

HttpPostedFile f = new HttpPostedFile();
f.InputStream = new System.IO.FileStream(); //replace this with Stream from your zip
HttpPostedFileBase zipFile = new HttpPostedFileWrapper(f);