Вот моя проблема, я использую 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.
Спасибо за ваше время ...
Саймон
Да, это после успеха, когда я пытаюсь запросить файл в его каталоге, у меня возникает ошибка `` модуль не найден ''. Итак, вы думаете, что я должен попытаться отправить все изображение в двоичном формате / потоке на передний план, а затем сохранить его вместо отправки имени изображения? Потому что мне просто нужно отобразить новое изображение на моем веб-сайте.
да, вы должны это сделать. отправить изображение целиком во фронтенд. Другое решение - сохранить двоичный формат или формат base64 преобразованного изображения в базе данных вашего сервера. поэтому всякий раз, когда пользователь запрашивает одно и то же изображение, отправляйте сохраненный двоичный файл изображения во внешний интерфейс и показывайте его. и еще кое-что, что вам не нужно хранить двоичный файл во внешнем интерфейсе, если вы просто хотите показать. преобразовать двоичный файл как dataurl и прикрепить dataurl к источнику изображения.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я наконец нашел способ показать мой 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)
})
},
Я думаю, что это причина, по которой требуется относительный URL-адрес. что означает, что изображение физически должно быть в вашем локальном. насколько я понимаю, после успеха вы получаете имя изображения. вместо этого вы не можете получить полный URL-адрес изображения и показать его? если ваш сервер хранит изображения. затем вы можете отправить все изображение во внешний интерфейс и попросить пользователя сохранить его локально.