Модуль VueJs не найден Axios Post

Вот моя проблема, я использую VueJs, и когда я отправляю изображение на свой сервер, мой сервер изменяет это изображение и создает другой и возвращает мне имя нового файла, но затем возникает ошибка, когда я пытаюсь require () мой новый img с новым путем ... вот мой HTML:

<template>
  <div id = "app">
    <div v-if = "codeStep == 0">
      <img class = "upload_img" :src = "filename" />
      <label id = "selectfile_button" for = "files_selecter" class = "btn">Select Image</label>
      <input id = "files_selecter" type = "file" style = "visibility:hidden;" @change = "onFileChange"/>
    </div>
    <div v-else = "">
      <img class = "upload_img" :src = "filename" />
      <p> {{ percentCompleted }} </p>
      <button v-on:click = "removeImage">{{ cancelText }}</button>
      <button v-if = "codeStep == 1" v-on:click = "submit">{{ nextText }}</button>
      <button v-else = "" v-on:click = "finishText">{{ finishText }}</button>
    </div>
  </div>
</template>

Вот мое объявление пути к файлу:

export default {

  data() {
    return {
      codeStep: 0,
      cancelText: "Cancel",
      nextText: "Blur",
      finishText: "Finish",
      filename: require('../../images/default-image.png'),
      attachments: [],
      data: new FormData(),
      errors: {},
      percentCompleted: 0,
    }
  },

И вот моя публикация моей функции, где я получаю, например, filename.jpg:

  submit() {
    this.prepareFields();
    var config = {
      header: {'Content-Type': 'multipart/form-data'},
      onUploadProgress: function(progressEvent) {
        this.percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total );
        this.$forceUpdate();
      }.bind(this)
    };
    let self = this;
    axios.post('/api/upload', this.data, config)
      .then(function (response) {
        console.info(response);
        console.info('Successful Upload');
        console.info(response.data)
        var res = response.data.filePath;
        console.info(res)

        // The error is here
        self.filename = require('../../images/' + res);
        self.codeStep = 2;
      })
      .catch(function(error){
        console.info(error)
      })
  },

И вот ошибка на моей консоли:

Error: Cannot find module './goku.jpg'. at webpackContextResolve (.$:24) at webpackContext (.$:19) at upload.vue?4b64:134 at

Я предполагаю, что vueJs require не поддерживает вызов нового файла во время выполнения, потому что он хранит все в dist /?

ps: первый default-image.png хорошо найден vuejs.

Спасибо за ваше время ...

Саймон

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

Em Ji Madhu 17.03.2018 07:10

Да, это после успеха, когда я пытаюсь запросить файл в его каталоге, у меня возникает ошибка `` модуль не найден ''. Итак, вы думаете, что я должен попытаться отправить все изображение в двоичном формате / потоке на передний план, а затем сохранить его вместо отправки имени изображения? Потому что мне просто нужно отобразить новое изображение на моем веб-сайте.

Simon Brami 19.03.2018 10:07

да, вы должны это сделать. отправить изображение целиком во фронтенд. Другое решение - сохранить двоичный формат или формат base64 преобразованного изображения в базе данных вашего сервера. поэтому всякий раз, когда пользователь запрашивает одно и то же изображение, отправляйте сохраненный двоичный файл изображения во внешний интерфейс и показывайте его. и еще кое-что, что вам не нужно хранить двоичный файл во внешнем интерфейсе, если вы просто хотите показать. преобразовать двоичный файл как dataurl и прикрепить dataurl к источнику изображения.

Em Ji Madhu 19.03.2018 11:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
133
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я наконец нашел способ показать мой img whitout, используя require. Вместо сохранения моего изображения в / image, Я храню его в / wwwroot / images /, который является подкаталогом из Vuejs webpack RootPath. Сделав это, я теперь могу получить доступ к своему изображению прямо из URL-адреса, например: локальный: 8080 / images / example.jpg.

axios.post('/api/upload', this.data, config)
      .then(function (response) {
        console.info(response);
        console.info('Successful Upload');
        console.info(response.data)
        var res = response.data.filePath;
        console.info(res)

        // The SOLUTION is here
        self.filename = 'images/' + res;
        self.codeStep = 2;
      })
      .catch(function(error){
        console.info(error)
      })
  },

Другие вопросы по теме