Vueはネイティブコンポーネントを使用して写真をアップロードします

要件の説明:背景から返された画像パスを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);
                    }
                }
            });
        })
    },

},

おすすめ

転載: blog.csdn.net/hhhhhhenrik/article/details/89708519