#ref属性から画像を取得して、表示する
// refからアップロード
input(type="file", ref="file", @change="leftSetImage")
v-img(:src="image.source")
// refから一時的なURLに変換して取得
leftSetImage() {
const files = this.$refs.file;
const fileImg = files.files[0];
if (fileImg.type.startsWith("image/")) {
this.image.source = window.URL.createObjectURL(fileImg);
}
},
#イベントオブジェクトから画像を取得して、表示する
###一時的なURLでプレビュー表示
// イベントオブジェクトからアップロード
input(
type="file",
@change="setImageLeft($event)"
)
v-img(:src="office.left_image.image", type="submit")
// イベントオブジェクトから、一時的URLに変換して取得
setImageLeft(e) {
const file = (e.target.files || e.dataTransfer)[0];
this.LeftUploadedImage = file;
if (file.type.startsWith("image/")) {
this.office.left_image.image = window.URL.createObjectURL(file);
}
},
#base64に変換して、プレビュー表示
今までのやり方だと、ブラウザを放置して更新したり、そのデータを画像を保存したりした時の再表示の動作ができなくなるということが起きる。
base64に変換する場合は、そのような事象は起きない。
// イベントオブジェクトからアップロード
input(
type="file",
@change="setImageRight($event)"
)
v-img(:src="office.right_image.image", type="submit")
// イベントオブジェクトから、base64に変換して取得
setImageRight(e) {
const file = e.target.files[0] || e.dataTransfer.files;
const reader = new FileReader();
reader.onload = (e) => {
this.office.right_image.image = e.target.result;
};
reader.readAsDataURL(file);
},