Исключение во время выполнения при загрузке файла с использованием vue.js и asp.net web api? - PullRequest
0 голосов
/ 26 октября 2019

У меня есть исключение, когда я пытался загрузить файл изображения с чем-то вроде этого

"Нет MediaTypeFormatter, доступного для чтения объекта типа 'HttpFileCollection' из содержимого с типом носителя 'multipart / form-data '. "

Я не использовал кнопку отправки, я просто хочу загрузить файл асинхронно без обратной передачи.

Вот мой код:

HTML:

 <input type="button" ref="upload" name="upload" v-on:click="UploadPhoto" />

Vue.JS:

             async UploadPhoto() {
                 let image = new FormData();
                image.append('name', 'fileUploader');
                image.append('file', this.$refs.fileUploader.files[0]);

                let config = {
                    headers: {
                      //  'Content-Type': 'image/*'
                       'Content-Type': 'multipart/form-data'
                    }
                };

                // call server upload request here...
                let testRes = await axios.post('http://localhost:44347/api/GetUser/UploadPhoto', image, config).then()
                    .catch(error => console.log(error));
                 this.result = testRes;
                 console.log(image);
            },

Web Api:

[HttpPost]
[Route("api/GetUser/UploadPhoto")]
public async Task<IHttpActionResult> UploadPhoto([FromBody] HttpFileCollection selectedfiles)
{
 await Task.Run(() =>
            {
   string sPath= HostingEnvironment.MapPath("~/Dummy/");
             //   HttpFileCollection selectedfiles = HttpContext.Current.Request.Files;
                 selectedfiles = HttpContext.Current.Request.Files;
                HttpPostedFile file = selectedfiles[0];
                string fileName = new FileInfo(file.FileName).Name;

                if (file.ContentLength > 0)
                {
                    Guid guid = new Guid();
                    string modFilename = guid.ToString() + "_" + fileName;
                    file.SaveAs(sPath + Path.GetFileName(modFilename));
                }
             });

            return Ok();
}

1 Ответ

0 голосов
/ 26 октября 2019

Похоже, что есть проблема с HttpFileCollection. Я не уверен, какую версию asp.net вы используете, поскольку вы не указали, но я предлагаю попробовать IFormFile :

public async Task<IHttpActionResult> UploadPhoto(IFormFile file)

В случае, если вы хотите иметь несколько загрузок файлов, просто используйте:

List<IFormFile> yourKeyNameFromFormData
...