| | |
| | | * 保存文件到 java 端,并返回文件名 |
| | | * @param objUrl |
| | | * @param callback |
| | | * @param onError |
| | | */ |
| | | fileSave(objUrl = '', callback) { |
| | | fileSave(objUrl = '', callback, onError) { |
| | | // 非 ObjectURL 跳过 |
| | | if (objUrl.indexOf('blob:') < 0) { |
| | | callback(objUrl); |
| | |
| | | }; |
| | | this.invoking('img_write', writeData, res => { |
| | | if (res.result === false) { |
| | | Tools.toast(res.msg); |
| | | Tools.toast('离线图片存储:' + res.msg); |
| | | onError({ |
| | | method: 'img_write', |
| | | request: { |
| | | fileName: writeData.fileName, |
| | | currentIdx: writeData.currentIdx, |
| | | totalIdx: writeData.total, |
| | | data: '(' + writeData.data.length + '个base64字符...)', |
| | | }, |
| | | response: res, |
| | | }); |
| | | return; |
| | | } |
| | | // 按分段递归保存 |
| | |
| | | * 从 java 读取文件 base64 |
| | | * @param bridgeName |
| | | * @param callback |
| | | * @param onError |
| | | */ |
| | | fileLoad(bridgeName = '', callback) { |
| | | fileLoad(bridgeName = '', callback, onError) { |
| | | // 非存储地址,跳过 |
| | | if (bridgeName.indexOf('bridge:') < 0) { |
| | | callback(bridgeName); |
| | |
| | | }; |
| | | this.invoking('img_read', loadData, res => { |
| | | if (res.result === false) { |
| | | Tools.toast(res.msg); |
| | | Tools.toast('离线图片读取:' + res.msg); |
| | | onError({ |
| | | method: 'img_read', |
| | | request: loadData, |
| | | response: { |
| | | result: res.result, |
| | | msg: res.msg, |
| | | 'total_size': res.totalSize, |
| | | data: '(' + (res.data || '').length + '个base64字符...)', |
| | | }, |
| | | }); |
| | | return; |
| | | } |
| | | if (totalSize === 0) { |
| | |
| | | callback && callback([]); |
| | | return; |
| | | } |
| | | if (typeof names === 'string') { |
| | | names = names.split(','); |
| | | } |
| | | // 保存 |
| | | if (type === 'save') { |
| | | const list = []; |
| | |
| | | else { |
| | | callback && callback(list); |
| | | } |
| | | }, err => { |
| | | callback && callback(null, err); |
| | | }); |
| | | }; |
| | | save(0); |
| | |
| | | else { |
| | | callback && callback(list); |
| | | } |
| | | }, err => { |
| | | callback && callback(null, err); |
| | | }); |
| | | }; |
| | | load(0); |
| | |
| | | }, |
| | | }; |
| | | |
| | | // 图片上传节流 |
| | | const _readyUpload = {}; |
| | | |
| | | export const uploadImage = (files, callback) => { |
| | | if (!files || files.length === 0) { |
| | | callback('success', []); |
| | |
| | | file.url.indexOf('wxfile') >= 0 || |
| | | file.url.indexOf('http://tmp/') >= 0 |
| | | ) { |
| | | let header = {}; |
| | | const header = {}; |
| | | if (process.env.TARO_ENV === 'weapp') { |
| | | const localCookies = JSON.parse(Taro.getStorageSync('cookies') || '{}'); |
| | | const cookiesArr = []; |
| | |
| | | }); |
| | | header['Cookie'] = cookiesArr.join('; '); |
| | | } |
| | | const requestFile = { |
| | | url, |
| | | filePath: file.url, |
| | | fileName: file.fileName || '', |
| | | }; |
| | | uploadTeam.push( |
| | | new Promise((resolve, reject) => { |
| | | // 如果本次已上传过,直接返回地址 |
| | | if (_readyUpload[file.url] && _readyUpload[file.url].length > 5) { |
| | | resolve(_readyUpload[file.url]); |
| | | return; |
| | | } |
| | | // 上传 |
| | | Taro.uploadFile({ |
| | | url, |
| | | ...requestFile, |
| | | header, |
| | | filePath: file.url, |
| | | fileName: file.fileName || '', |
| | | name: 'file', |
| | | formData: {}, |
| | | success(res) { |
| | |
| | | typeof res.data === 'string' |
| | | ? JSON.parse(res.data) |
| | | : res.data; |
| | | // 上传成功 |
| | | if (res2.state.code === 2000) { |
| | | resolve( |
| | | $fetchCommon.transImgPath( |
| | | 'fix', |
| | | res2.data.src || res2.data.file || res2.data.url |
| | | ) |
| | | const imgUrl = $fetchCommon.transImgPath( |
| | | 'fix', |
| | | res2.data.src || res2.data.file || res2.data.url |
| | | ); |
| | | } else { |
| | | reject({ message: res2.state.msg }); |
| | | _readyUpload[file.url] = imgUrl; |
| | | resolve(imgUrl); |
| | | } |
| | | // 上传失败 |
| | | else { |
| | | reject({ |
| | | ...requestFile, |
| | | response: res2, |
| | | message: res2.state.msg, |
| | | }); |
| | | } |
| | | }, |
| | | cancel() { |
| | | reject({ message: '上传图片已取消!' }); |
| | | cancel(err) { |
| | | reject({ |
| | | ...requestFile, |
| | | message: '上传图片已取消!', |
| | | }); |
| | | }, |
| | | fail() { |
| | | reject({ message: '上传图片失败!' }); |
| | | reject({ |
| | | ...requestFile, |
| | | message: '上传图片失败!', |
| | | }); |
| | | }, |
| | | }); |
| | | }) |