封装完最终效果图
async chooseimg ( ) {
let data = await this . $upimg. Upimgload ( )
this . imglist = this . imglist. concat ( data) . slice ( 0 , 9 )
} ,
deletePic ( index ) {
this . imglist. splice ( index, 1 )
} ,
实现步骤,新建uploadimg.js
uploadurl ,是后台接口图片上传的地址,这个设置成全局变量也不能直接this引用,故还是直接导入地址即可 Token,不同项目看token存放的地址,一般可以先存缓存,从缓存里面取值 n=9,默认9张,可以通过传不同的参数,限制张数
import {
baseUrl,
} from '@/common/config.js'
export default {
Upimgload ( n = 9 ) {
let fileIndex = 0 ;
let successList = [ ]
return new Promise ( ( resolve, reject ) => {
uni. chooseImage ( {
count : n,
sizeType : [ 'original' , 'compressed' ] ,
sourceType : [ 'album' ] ,
success : function ( res ) {
console. log ( baseUrl) ;
uni. showLoading ( {
title : "上传中"
} )
res. tempFilePaths. forEach ( item => {
uni. uploadFile ( {
url : baseUrl + '/api/common/upload' ,
filePath : item,
name : 'file' ,
header : {
'Token' : uni. getStorageSync ( 'token' ) || ''
} ,
formData : { } ,
success : ( uploadFileRes ) => {
let data = JSON . parse ( uploadFileRes. data) ;
fileIndex += 1
successList. push ( data. data)
console. log ( successList)
if ( res. tempFilePaths. length == fileIndex) {
console. log ( 1111 )
fileIndex = 0
uni. hideLoading ( )
resolve ( successList)
return
}
} ,
fail ( err ) {
console. log ( err)
}
} ) ;
} )
}
} )
} )
}
}
全局方法挂载,在main.js中注册
up 这个名字随便起,只负责接收 $upimg,这个名字也随便起,但其他页面使用的时候要和这个保持一致
import up from "@/api/uploadimg.js"
Vue . prototype. $upimg = up