【发布时间】:2017-03-07 16:10:14
【问题描述】:
我正在使用 TypeScript 和 Haml。我希望能够使用 vue.js 上传和查看文件。我可以上传一张图片,但它应该像这里演示的那样立即显示:https://codepen.io/Atinux/pen/qOvawK/
相反,我得到了这个错误:
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(file)而不是使用文件阅读器...
标签: javascript typescript haml vue.js