2014-12-05 287 views
0

我正在尝试将一个Excel(.xlsx)文件保存到发送到Web服务的磁盘中。我使用的代码如下,但是当我点击保存的文件时,它会返回一个“The File is corrupt and can not be opened”错误。但同样的方法适用于CSV文件。通过保存C#中的字节流创建的Excel文件(.xlsx)无法打开

string dataFile = await Request.Content.ReadAsStringAsync(); 
    byte[] byteArray = Encoding.UTF8.GetBytes(dataFile); 
    MemoryStream stream_ = new MemoryStream(byteArray); 
    MultipartParser.MultipartParser mp = new MultipartParser.MultipartParser(stream_); 

    // Save Excel file 
    File.WriteAllBytes(@"C:\temp\output.xlsx", mp.FileContents); 
+0

您是否尝试过处置的stream_ ? – 2014-12-05 12:08:13

+0

您的数据是xlsx格式?我不这么认为。 – 2014-12-05 12:09:34

+0

是的,它是xlsx格式 – DafaDil 2014-12-05 12:11:37

回答

0

以下工作,

 string root = HttpContext.Current.Server.MapPath("~/App_Data"); 
     var provider = new MultipartFormDataStreamProvider(root); 

     try 
     { 
      string fileName = ""; 
      string fileLocalName = ""; 
      var result = await Request.Content.ReadAsMultipartAsync(provider); 
      foreach (MultipartFileData file in provider.FileData) 
      { 
       fileLocalName = file.LocalFileName; 
      } 

      File.WriteAllBytes(@"C:\temp\output.xlsx", File.ReadAllBytes(fileLocalName)); 
     } 

感谢您的帮助,本·罗宾逊,丹尼尔A.白色,阿里Sepehri.Kh和费萨尔·哈菲兹的帮助