У меня есть приложение с угловым выражением, написанное на машинописном машинописном материале с использованием ASP.Net Web Api. Я пытаюсь использовать ng-file-upload (см. Это link для получения дополнительной информации), чтобы загрузить файл изображения.Ожидаемый конец многоточечного потока MIME. MIME multipart message не является полным
я получаю исключение в моем веб-метода API сообщение:
«Неожиданный конец потока многочастного MIME MIME составного сообщения не является полным.»
Я сделал свое исследование и нашел похожие проблемы here - Я попытался реализовать ответ Landuber Kassa, но безуспешно.
Также this, хотя мой проект не является MVC, и в любом случае он не работает.
Я свеж от идей и ценю мысли сообщества. Я рад рассмотреть любые другие альтернативы, если я могу быть указан в правильном направлении.
Зола
Моего .Net Сообщение метода (реализации идеи Landuber KASSA в):
[RoutePrefix("BeaufortAppStore/api/Image")]
public class ImageController : ApiController
{
#region Methods
#region Posts
[Route("UploadImage")]
[HttpPost]
public async Task<IHttpActionResult> UploadImage()
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider = new MultipartMemoryStreamProvider();
Stream reqStream = Request.Content.ReadAsStreamAsync().Result;
MemoryStream tempStream = new MemoryStream();
reqStream.CopyTo(tempStream);
tempStream.Seek(0, SeekOrigin.End);
StreamWriter writer = new StreamWriter(tempStream);
writer.WriteLine();
writer.Flush();
tempStream.Position = 0;
StreamContent streamContent = new StreamContent(tempStream);
foreach (var header in Request.Content.Headers)
{
streamContent.Headers.Add(header.Key, header.Value);
}
// Read the form data and return an async task.
await streamContent.ReadAsMultipartAsync(provider); // FAILS AT THIS POINT
foreach (var file in provider.Contents)
{
var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
var buffer = await file.ReadAsByteArrayAsync();
//Do whatever you want with filename and its binary data.
}
return Ok();
}
#endregion
#endregion
Моего Угловой метод контроллера:
public upload(): void {
//Create config used in ng-file-upload
var config: IFileUploadConfigFile = {
data: this.file, url: "BeaufortAppStore/api/Image/UploadImage/", method: "POST" };
this._dataService.uploadImage(config).then((result: any) => {
this.thumbnail = result.data;
});
}
Моего угловой вид (частичный вид по директиве) :
<div class="form-group">
<label for="file" class="control-label col-xs-2">Choose a file</label>
<input id="file" type="file" name="file" class="form-control" ngf-select ngf-pattern="'image/*'"
ng-model="vm.file" />
<img style="width:100px;" ngf-thumbnail="thumbnail || '/thumb.jpg'" />
<button type="submit" ng-click="vm.upload()">Upload</button>
Спасибо за быстрый ответ. Прежде чем попытаться, вы можете немного объяснить, что отличает этот подход. –
В основном это проверенный битвой способ получить контент загрузки mutipart из угловой загрузки ... он принимает правильный формат из этого. Request и с задачей async он генерирует имя (со случайным указателем, чтобы не перезаписывать или если кто-то загрузит одно и то же изображение с тем же именем другого) –
Я покажу вам контроллер (Angular) и html, если вам это нужно ... и не забудьте указать свой метод отправки (проверьте его на консоли Chrome .. если формат прав .. если он не пытается перезаписать заголовок запроса) –