2016-06-21 18 views
0

私はExcelファイルを読み込んでWebApiエンドポイントに投稿する必要があります。エンドポイントは、どのように私は私のFileStreamHttpClientPostAsync方法を用いて上記の方法に送信することができますC#httpclientを使用してファイルをアップロードする

[AcceptVerbs(HttpVerbs.Post)] 

public JsonResult Upload(HttpPostedFileBase import) 
{ 
} 

以下に示すようなタイプHttpPostedFileBaseimportという名前のパラメータがあります。私の経験から、事前

答えて

0

それは

using (var content = new MultipartFormDataContent()) 
     { 
      var stream = new StreamContent(File.Open(filePath,FileMode.Open)); 

      stream.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
      stream.Headers.Add("Content-Disposition", "form-data; name=\"import\"; filename=\"attendances.xslx\""); 
      content.Add(stream, "import", "attendances.xslx"); 

      var response = client.PostAsync(methodePath, content).Result; 
      var result = response.Content.ReadAsAsync<ResponseModel<AttendanceModel>>().Result; 
      return result.IsSuccess; 
     } 
0

おかげであなたはRequestオブジェクトからファイルを取得する必要があります、と私はエクセルで動作するようにOfficeOpenXmlを使用HttpPostedFileBase

[HttpPost] 
public ActionResult Upload(WhateverModel model) 
{ 
    fileName = file.FileName; 
    var dataList = new List<ExcelDataModel>(); 
    using (var package = new ExcelPackage(file.InputStream)) 
    { 
     var currentSheet = package.Workbook.Worksheets; 
     var workSheet = currentSheet.First(); 
     var rowCount = workSheet.Dimension.End.Row; 

     for (int i = 2; i <= rowCount; i++) 
     { 
      var dm = new ExcelDataModel 
      { 
       Value = workSheet.Cells[i, 1].Value.ToString(), 
       Name = workSheet.Cells[i, 2].Value.ToString(), 
       Label = workSheet.Cells[i, 3].Value.ToString() 
      }; 

      dataList.Add(dm); 
     } 
    } 
} 

の必要はありません、あなたはそれをとして取得することができますナゲットパッケージ

+0

おかげで以下のように私の作品が、私はclient.postAsyncは((パラメータとして輸入をFILESTREAMたとえば、あなたが私は私の側からそのAPIにファイルを投稿したい私の質問を持っていなかったと思います)ここ)しかし、PostAsyncはfilestreamを直接投稿することを許可していません。私は私のファイルストリームを私の側からそのAPIに投稿する方法を尋ねます。 – jitender

+0

@jitenderこれはあなたを助けるかもしれないと思う:http://stackoverflow.com/questions/10339877/asp-net-webapi-how-to-perform-a-multipart-post-with-file-upload-using-webapi- ht – Alex

+0

ちょっとした変更を加えてくれてありがとうございます。 stream.Headers.Add( "Content-Disposition"、 "form-data; name = \" import \ "; filename = \" attendances.xslx \ ""); もう一度感謝します – jitender

関連する問題