我正在使用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將其發送到服務器,然後才能夠轉向並從服務器加載它。 –
你知道你可以使用'URL.createObjectURL(文件)'而不是使用文件讀取器... – Endless