2014-01-13 79 views
0

我正在使用ASP.NET MVC的這下載附着在HttpRequestMessage下載zip文件:控制器

zip文件網絡的API如下

var task = this.Request.Content.ReadAsStreamAsync(); 
      task.Wait(); 

      if (this.Request.Content.IsMimeMultipartContent()) 
      { 

       using (Stream requestStream = task.Result) 
       { 
        // Do not know how to copy the above request to file stream or zip (ionic zip) and generate zip file from it 
       } 
      } 

備註:

1)

using (var fileStream = File.Create("name.zip")) 
         { 
          requestStream.CopyTo(fileStream); 
         } 

創建無效的壓縮文件。

2)Zip包含很多文件。

等待您的意見

更新1:

var provider = new MultipartFormDataStreamProvider(ScriptPath); 

       Request.Content.ReadAsMultipartAsync(provider);     

       foreach (MultipartFileData file in provider.FileData) 
       { 

        Trace.Write(file.Headers.ContentDisposition.FileName); 
        Trace.Write("Server file path: " + ScriptPath); 

       } 

雖然沒有幫我

+1

你的問題是什麼? –

+0

看起來很明顯,但要確認 - 你可以節省服務器上的文件,是否正確? (我可能把這叫做上載) –

+0

@ G.Stoynev文件拉鍊內得到了下載,但文件流中提到的名字是無效 – GowthamanSS

回答

0

這對我的作品。請將其視爲假,因爲我沒有編譯它。 你也可能要返工阻塞 .Result呼籲採取異步讀取的優勢。

var requestStream = await Request.Content.ReadAsMultipartAsync(); 

HttpContent fileContent = requestStream.Contents.SingleOrDefault(c => c.Headers.ContentType != null); 

byte[] fileBytes = await fileContent.ReadAsByteArrayAsync(); 
using (FileStream fs = File.OpenWrite(outputPath)) 
{ 
    fs.Write(fileBytes, 0, (int)fileContent.Headers.ContentLength.Value); 
} 
+0

會嘗試和更新ü – GowthamanSS

+0

可你只是重新構建你的答案,因爲我是其中的一部分得到錯誤 – GowthamanSS

+0

代碼給你帶來麻煩? –