要件の説明:背景から返された画像パスをimgのsrcに割り当てる必要があります
1ページごとに画像をアップロードします
ページに写真をアップロードする場所が1つしかない場合、アップロードボタンを直接バインドするのは非常に簡単です。
htmlページ
<div class="col-md-4">
<input class="hidden" accept="image/png,image/jpg" type="file" id="tempUploadFile" v-on:change="uploadPic($event)" />
<input class="hidden" v-model="mapItem.MapIcon" />
<img class="imgbgbox" v-bind:src="mapItem.MapIcon" />
</div>
jsコード:写真をアップロードする方法をカプセル化する
uploadPic(e) {
var _self = this;
var inputFile = e.target;
if (!inputFile.files || inputFile.files.length <= 0) {
return;
}
var file = inputFile.files[0];
var formData = new FormData();
formData.append('file', file);
formData.append('SaveDir', 'Map/MapItem');
formData.append("FileName", $.whiskey.tools.dateFormat(new Date(), "HHmmssffff"));
$.ajax({
url: "/Upload/UploadPic",//后台上传图片的方法
type: 'POST',
dateType: 'json',
cache: false,
data: formData,
processData: false,
contentType: false,
success: function (res) {
if (res.ResultType == 3) {
var filePath = res.Data.file;//后台返回的图片路径
_self.mapItem.MapIcon = filePath;//将路径赋值到声明的变量中
}
}
});
},
21ページに複数の写真をアップロードする
ページに写真をアップロードする必要のある場所が複数ある場合、上記の方法に従うと、複数のアップロード関数をバインドする必要があるため、繰り返される部分をカプセル化し、promise関数の
htmlページを使用しました
<div class="col-md-4">
<input class="hidden" accept="image/png,image/jpg" type="file" id="tempUploadFile" v-on:change="uploadPic($event)" />
<input class="hidden" v-model="mapItem.MapIcon" />
<img class="imgbgbox" v-bind:src="mapItem.MapIcon" />
</div>
jsコード:写真をアップロードする方法をカプセル化する
uploadPic(e) {
var _self = this;
var inputfile = e.target;
_self.uploadImg(inputfile).then(data => {
_self.mapItem.MapIcon = data;//data为取到的图片路径
})
},
//封装函数
uploadImg(inputFile) {
var _self = this;
if (!inputFile.files || inputFile.files.length <= 0) {
return;
}
return new Promise((suc,err)=>{
var file = inputFile.files[0];
var filepath = "";
var formData = new FormData();
formData.append('file', file);
formData.append('SaveDir', 'Map/MapSite');
formData.append("FileName", $.whiskey.tools.dateFormat(new Date(), "HHmmssffff"));
$.ajax({
url: "/Upload/UploadPic",
type: 'POST',
dateType: 'json',
cache: false,
data: formData,
processData: false,
async:false,
contentType: false,
success: function (res) {
if (res.ResultType == 3) {
filepath = res.Data.file;
suc(filepath);
}
}
});
})
},
},