2016-12-06 20 views
2

角度1.5xから.netコアWeb APIコントローラにフォームデータを含むファイルをアップロードしようとしています。 私のコントローラは、このasp.netコアのフォームデータを使用したファイルアップロード

[HttpPost]public async Task<ObjectResult> Create(TutorModel model) 
    { 
    } 

私のPOSTメソッドのように見える、それはコントローラに投稿するとき

return $http.post("/api/Tutor/createTutor/", 
 
     data, 
 
       { 
 
        withCredentials: false, 
 
        headers: { 'Content-Type': undefined }, 
 
        transformRequest: angular.identity, 
 
        responseType: "arryabuffer" 
 
       }); 
 

 

 
Where data is 
 

 

 
for (var i = 0; i < vm.uploadedFiles.length ; i++) { //vm.upload contains list of file 
 
       data.append(vm.uploadedFiles[i].name, vm.uploadedFiles[i]); 
 
      } 
 
      data.append("tutor", tutor); //tutor is json object

今、モデルは何のプロパティ値が含まれていないです。 Request.Form.Filesを見ると、コントローラにファイルがアップロードされます。上記のメソッドをポストするためのモデルを送信する最良の方法は何ですか?任意のポインタ?ありがとう

+1

https://www.asp.net/web-api/overview/advanced/sending-html-form-data-part-2読む詳細記事 - 私は@Developer – Developer

+0

を助けるべきですasp.netのコアの例を探しています。しかし、リンクのおかげで – Aryan

答えて

1

このトピックを簡単にカバーします。

コントローラの動作は次のようになります。リレーショナル・データベースにバイナリデータを格納するとき、それは衝撃性能に悪影響を与えることができますよう、注意してください:IFormFileは、これらのプロパティ

public interface IFormFile 
    { 
    string ContentType { get; } 
    string ContentDisposition { get; } 
    IHeaderDictionary Headers { get; } 
    long Length { get; } 
    string Name { get; } 
    string FileName { get; } 
    Stream OpenReadStream(); 
    void CopyTo(Stream target); 
    Task CopyToAsync(Stream target, CancellationToken cancellationToken = null); 
    } 

注意を持って

[HttpPost("UploadFiles")] 
public async Task<IActionResult> Post(List<IFormFile> files) 
{ 
    long size = files.Sum(f => f.Length); 

    // full path to file in temp location 
    var filePath = Path.GetTempFileName(); 

    foreach (var formFile in files) 
    { 
     if (formFile.Length > 0) 
     { 
     using (var stream = new FileStream(filePath, FileMode.Create)) 
     { 
      await formFile.CopyToAsync(stream); 
     } 
     } 
    } 

    // process uploaded files 

    return Ok(new { count = files.Count, size, filePath}); 
} 

ここ File Uploads

+0

私は渡したいviewmodelはどうですか?私の頭の中で頭がおかしくなる。私は正常にファイルとフォームのデータをparamsを使って渡しましたが、jsonオブジェクトをファイルで送信したいと思います。 パブリッククラスVM { 公共VM(){ 家庭教師=新しいTHX – Aryan

+0

は私が – Ahmar

+0

'パブリッククラスチューター{;セット;} パブリック文字列名前{取得;セット} 公共int型のID {取得}これら二つのモデルを作成しました家庭教師(); } 公共一覧ファイル{取得; { data.append((;;私はvm.files.lengthを Ahmar

関連する問題