2016-06-16 5 views
2

zipファイルをアップロードするapiを実装します。ファイルmvc6をアップロードするには?

私の機能はテキストファイルでは機能しますが、zipファイルでは機能しません。 Zipファイルは保存されていますが、開くことはできません。 あなたはこれについて良いことを知っていますか?クライアントで

私は次のアクションにAPIを呼び出します。

[HttpPost] 
     public async Task<IActionResult> Upload(ICollection<IFormFile> files) 
     { 
      using (var client = new HttpClient()) 
      { 
       foreach (var file in files) 
       { 
        if (file.Length > 0) 
        { 
         var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); 
         var fileContent = new StreamContent(file.OpenReadStream()); 
         fileContent.Headers.Add("X-FileName", fileName); 
         fileContent.Headers.Add("X-ContentType", file.ContentType); 

         var response = await client.PostAsync(url2, fileContent); 
        } 
       } 
      } 
      return View(nameof(this.Index)); 

     } 

これは私のAPIです:

[HttpPost] 
    public async Task<IActionResult> Post() 
    { 

     var input = new StreamReader(Request.Body).ReadToEnd(); 
     var fileName = Request.Headers["X-FileName"]; 
     var fileType = Request.Headers["X-ContentType"]; 

     using (var sw = new StreamWriter(@"C:\" + fileName)) 
     { 
      sw.Write(input); 
     } 

     await Task.FromResult(0); 
     return new ObjectResult(true); 
    } 

答えて

0

は、これが私のsolutinです:クライアントAPIで

 [HttpPost("{lastModified}")] 
     public async Task<string> Upload(long lastModified) 
     { 
      using (var client = new HttpClient()) 
      { 

       foreach (var file in Request.Form.Files) 
       { 
        if (file.Length > 0) 
        { 
         var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); 
         var fileContent = new StreamContent(file.OpenReadStream()); 
         var archiveUrl = "path to api with 2 parameters {fileName}/{lastModified}"; 
         var datasetResponse = await client.PostAsync(archiveUrl, fileContent); 
         var dataset = await datasetResponse.Content.ReadAsStringAsync(); 
         return dataset; 
        } 
       } 

       throw new ApplicationException("Cannot updated dataset to archive"); 
      } 
     } 

オンサーバAPI

 [HttpPost("{fileName}/{lastModified}")] 
     public async Task<IActionResult> Post(string fileName, long lastModified) 
     {   
      var dataSet = getDataSet(); 

      return new ObjectResult(dataSet); 
     } 
関連する問題