私は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