import config from './config' ;
export function uploadImages ( count = 1 , sourceType, onLoading = null , showProgress = false , fileKey = 'file' ) {
return new Promise ( ( resolve, reject ) => {
wx. chooseMedia ( {
count: count,
sizeType: [ 'original' , 'compressed' ] ,
sourceType,
success : ( chooseResult ) => {
console. log ( 'chooseResult' , chooseResult) ;
const tempFilePaths = chooseResult. tempFiles;
const uploadPromises = tempFilePaths. map ( ( filePath, index ) => {
const baseUrl = ( env == 'pro' || ! env) ? config. BASE_URL : config. DEV_URL ;
const param = 'demo' ;
const formData = {
... param,
sign: signStr,
} ;
console. log ( 'filePath:' , filePath, 'name:' , fileKey, 'formData' , formData) ;
return new Promise ( ( resolve, reject ) => {
const uploadTask = wx. uploadFile ( {
url: ` ${ baseUrl} ${ config. UPLOAD_URL } ` ,
filePath: filePath. tempFilePath,
name: fileKey,
header: {
"Content-Type" : "multipart/form-data"
} ,
formData: {
data: JSON . stringify ( formData)
} ,
success : ( uploadResult ) => {
console. log ( uploadResult) ;
if ( uploadResult. statusCode === 200 ) {
const data = JSON . parse ( uploadResult. data) ;
if ( returnLocation) {
resolve ( data) ;
return ;
}
resolve ( data. url) ;
} else {
console. error ( ` Upload failed with status code ${ uploadResult. statusCode} ` ) ;
reject ( new Error ( ` Upload failed with status code ${ uploadResult. statusCode} ` ) ) ;
}
} ,
fail : ( error ) => {
console. error ( 'Upload failed:' , error) ;
reject ( error) ;
}
} ) ;
if ( showProgress) {
uploadTask. onProgressUpdate ( ( res ) => {
console. log ( ` File ${ index + 1 } progress: ${ res. progress} % ` ) ;
if ( onLoading) {
onLoading ( ` 上传中... ${ res. progress} % ` ) ;
}
} ) ;
}
} ) ;
} ) ;
if ( onLoading) {
onLoading ( '上传中...' ) ;
}
Promise. all ( uploadPromises)
. then ( ( results ) => {
console. log ( '上传成功-----' , results) ;
if ( onLoading) {
onLoading ( null ) ;
}
resolve ( results) ;
} )
. catch ( ( error ) => {
if ( onLoading) {
onLoading ( null ) ;
}
wx. showToast ( {
title: '上传失败' ,
icon: 'none'
} ) ;
reject ( error) ;
} ) ;
} ,
} ) ;
} ) ;
} ;
< button data- type= "avatar" open- type= "chooseAvatar" bindchooseavatar= "handleAvatarChoose" >
handleAvatarChoose ( e ) {
uploadAvatar ( e. detail. avatarUrl) . then ( ( url ) => {
console. log ( '上传成功,返回内容是:' , url) ;
this . setData ( { avatar: url } ) ;
} ) . catch ( ( error ) => {
console. log ( ` 图片上传失败-- ${ JSON . stringify ( error) } ` ) ;
} ) ;
} ,
export function uploadAvatar ( avatarUrl ) {
return new Promise ( ( resolve, reject ) => {
const param = {
nonce: getNum ( ) ,
timestamp: new Date ( ) . getTime ( ) + '' ,
token: wx. getStorageSync ( 'token' ) || '' ,
userid: wx. getStorageSync ( 'userid' ) || '' ,
} ;
const env = wx. getStorageSync ( 'env' ) ;
const baseUrl = ( env == 'pro' || ! env) ? config. BASE_URL : config. DEV_URL ;
const formData = {
... param,
sign: signStr,
} ;
console. log ( 'filePath:' , avatarUrl, 'formData' , formData) ;
wx. uploadFile ( {
url: ` ${ baseUrl} ${ config. UPLOAD_URL } ` ,
filePath: avatarUrl,
name: 'file' ,
header: {
'Content-Type' : 'multipart/form-data' ,
} ,
formData: {
data: JSON . stringify ( formData) ,
} ,
success : function ( res ) {
if ( res. statusCode === 200 ) {
try {
const data = JSON . parse ( res. data) ;
resolve ( data. url) ;
} catch ( error) {
console. error ( 'JSON parse error:' , error) ;
reject ( new Error ( 'JSON parse error' ) ) ;
}
} else {
console. error ( ` Upload failed with status code ${ res. statusCode} ` ) ;
reject ( new Error ( ` Upload failed with status code ${ res. statusCode} ` ) ) ;
}
} ,
fail : function ( error ) {
console. error ( 'Upload failed:' , error) ;
reject ( error) ;
}
} ) ;
} ) ;
} ;