2017-09-26 8 views
0

ASP.NET Web APIがストリームを正しく読み込めない場合、「MIME multipart streamの予期しない終了、MIME multipartメッセージが完了していません。私は、ストリームを読み、どこ例外がスローされた場所ですangle-file-upload:データを含むファイルをアップロードできません。

vm.fileUploader = new FileUploader({ 
    url: 'api/FileAPI/Upload', withCredentials: true, method: 'POST',    
}); 

vm.fileUploader.onCompleteItem = function (fileItem, response, status, headers) { 
    vm.data = response; 
}; 

vm.fileUploader.onBeforeUploadItem = function (item) { 
    item.formData = [{ folder: vm.folderName }]; 
} 

これは私の角度アップローダーコードです。このメソッドはapiコントローラから呼び出され、ここでフォームデータをパラメータとして取得します。

public async Task<IEnumerable<PhotoViewModel>> AddFile(HttpRequestMessage request) 
{ 
    try 
    { 
     //nothing special in PhotoMultipartFormDataStreamProvider 
     var provider = new PhotoMultipartFormDataStreamProvider(this.workingFolder); 
     await request.Content.ReadAsMultipartAsync(provider); 
     var photos = new List<PhotoViewModel>(); 
     foreach (var file in provider.FileData) 
     { 
      var fileInfo = new FileInfo(file.LocalFileName); 
      photos.Add(new PhotoViewModel 
      { 
       Name = fileInfo.Name, 
       Size = fileInfo.Length/1024 
      }); 
     } 
     return photos; 
    } 
    catch(Exception ex) 
    { 
     throw new Exception("Error uploading file", ex); 
    } 
} 

そして、ここに私の要求文字列です:

Method: POST, RequestUri: 'http://localhost:49645/api/FileAPI/Upload', Version: 1.1, Content: System.Web.Http.WebHost.HttpControllerHandler+LazyStreamContent, Headers: 
{ 
    Connection: keep-alive 
    Accept: */* 
    Accept-Encoding: gzip 
    Accept-Encoding: deflate 
    Accept-Encoding: br 
    Accept-Language: sr-RS 
    Accept-Language: sr; q=0.8 
    Accept-Language: en-US; q=0.6 
    Accept-Language: en; q=0.4 
    Host: localhost:49645 
    Referer: http://localhost:49645/upload 
    User-Agent: Mozilla/5.0 
    User-Agent: (Windows NT 10.0; Win64; x64) 
    User-Agent: AppleWebKit/537.36 
    User-Agent: (KHTML, like Gecko) 
    User-Agent: Chrome/60.0.3112.113 
    User-Agent: Safari/537.36 
    Origin: http://localhost:49645 
    Content-Length: 791882 
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxUFnwtUwHSuA4X5Q 
} 

私は追加のデータなしでファイルをアップロードすると、それが正常に動作しますが、私は、フォームのデータを追加するとき、私はこの例外を取得します。私はヘッダー、コンテンツタイプを変更しようとしましたが、運はありません。私は別の質問から読んだことも試しましたが、角度ファイルアップロードは使用されていません。

答えて

0

は、あなたのonBeforeUploadItemコードでこれを試してみてください -

vm.fileUploader.onBeforeUploadItem = function (item) { 
    item.formData.push({ folder: vm.folderName }); 
} 
+0

いや、同じ例外。私はこれが角度ファイルアップロードがこのタイプの要求をどのように作り出すかというものだと思います。私はいつもコントローラのfolderNameデータを取得しますが、ファイルストリームを読み取ることはできません – vpetrovic

+0

.netコードは分かりませんが、サーバー側で間違っていると思います。 "あなたが助けるかもしれないasp.netのhttp投稿で身体を取得する"を探してください。 –

関連する問題