Nuxt.js — Как загрузить изображение в cloudinary?

#vue.js #nuxt.js #cloudinary

#vue.js #nuxt.js #cloudinary

Вопрос:

Я пытаюсь загрузить изображение в cloudinary со стороны клиента. Я создал данные формы и пытаюсь передать их, но они возвращаются пустыми.

HTML:

 <div class="my-2">
  <input
    id="image"
    ref="image"
    type="file"
    class="inputfile img"
    name="image"
    aria-describedby="imageFile"
    accept="image/*"
    @change="addImage"
  />
  <label for="image">
    <span>{{ fileName }}</span>
    <strong><i class="fas fa-upload"></i> Choose an Imageamp;hellip;</strong>
  </label>
</div>
 

Вызывается функция addImage:

     async addImage(image) {
      try {
        this.$emit('input', image.target.files[0]);

        this.photo = this.$refs.image.files[0];
        this.photoName = this.photo.name;

        const formData = new FormData();
        formData.append('file', this.photo, this.photo.name);

        const upload = await this.$cloudinary.upload(formData, {
          upload_preset: 'jj4vb6nq',
        });

      } catch (e) {
        console.error(e.message);
        // this.error = e.message;
      }
    },
 

Когда он пытается загрузить, я получаю следующую ошибку:

 {
  "message": "Invalid file parameter. Make sure your file parameter does not include '[]'"
}
 

Есть ли лучший способ загрузить изображение?

Комментарии:

1. не могли бы вы зарегистрировать полезную нагрузку вашего запроса при отправке в cloudinary на вкладке сеть, пожалуйста?

2. `FormData { } Object { upload_preset: «jj4vb6nq» } ` Объект FormData кажется пустым, хотя я добавил информацию.

3. не могли бы вы зарегистрировать это.photo = this.$refs.image. файлы [0];

4. журнал для этого.photo — это файл { имя: «Скриншот из 2020-11-05 16-12-45.png», последнее изменение: 1604590494854, webkitRelativePath: «», размер: 291860, тип: «изображение / png»}

5. попробуйте изменить эту строку this.photo = image.target.files[0]

Ответ №1:

Поскольку вы передаете объект как файл, а не только сам файл, вы получаете эту ошибку. Файл может содержать фактические данные (буфер массива байтов), URI данных (кодировка Base64), удаленный FTP, HTTP или HTTPS URL существующего файла.