저는 TypeScript와 Haml을 사용하고 있습니다. vue.js를 사용하여 파일을 업로드하고 볼 수 있기를 바랍니다. 나는 이미지를 업로드 할 수 있어요 그러나 여기 시연으로는 바로 표시하도록되어 : https://codepen.io/Atinux/pen/qOvawK/VueJS를 사용하여 입력 파일 업로드 및보기
대신,이 오류가 발생합니다 :
http://localhost:8080/image 자원을로드하지 못했습니다 : 서버 (404)의 상태로 응답 (찾을 수 없음)
루트 디렉토리에서 이미지를 가져 오려고하는 경우 문제가 있습니까? 어떻게 해결할 수 있을까요?
page_image.ts :
require("./page_image.scss");
import Vue = require("vue");
import {Injections} from "../../init";
export const PageImage = {
template: require("./page_image.haml"),
data: function() {
return {
image: ''
}
},
created() {
Injections.HeaderTextManager.setHeader("Videos");
Injections.HeaderTextManager.clearDescription();
},
methods: {
onFileChange(e:any) {
var files = e.target.files || e.dataTransfer.files;
if (!files.length)
return;
this.createImage(files[0]);
},
createImage(file:any) {
var image = new Image();
var reader = new FileReader();
var vm = this;
reader.onload = (e:any) => {
vm.image = e.target.result;
};
reader.readAsDataURL(file);
},
removeImage: function (e:any) {
this.image = '';
}
}
};
page_image.haml :
.page-image
.row
.col-xs-12
.box
.box-header
%div(v-if="!image")
%h3.box-title Upload an image
%input(type="file" v-on:change="onFileChange")
%div(v-else)
%img(src="image" name="image")
%img {{image}}
%button(v-on:click="removeImage") Remove image
코드는 브라우저에서 단지 이미지를 읽고 있습니다.그런 다음 XHR을 사용하여 서버로 보내기 전에 서버에서 돌아가서로드 할 수 있어야합니다. –
당신은 filereader를 사용하는 대신에'URL.createObjectURL (file)'을 사용할 수 있다는 것을 알고 있습니다 ... – Endless