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
}
私は追加のデータなしでファイルをアップロードすると、それが正常に動作しますが、私は、フォームのデータを追加するとき、私はこの例外を取得します。私はヘッダー、コンテンツタイプを変更しようとしましたが、運はありません。私は別の質問から読んだことも試しましたが、角度ファイルアップロードは使用されていません。
いや、同じ例外。私はこれが角度ファイルアップロードがこのタイプの要求をどのように作り出すかというものだと思います。私はいつもコントローラのfolderNameデータを取得しますが、ファイルストリームを読み取ることはできません – vpetrovic
.netコードは分かりませんが、サーバー側で間違っていると思います。 "あなたが助けるかもしれないasp.netのhttp投稿で身体を取得する"を探してください。 –