//import { arrayBuffer } from "js-md5" import { Base64 } from 'js-base64'; import TaskInit from "@/common/extend.js" const public_bucketname = "mobox3-public"; // 得到文件上传地址 export const getUploadUrl = (svrUrl, svrinfo, savepath, isPublic) => { return new Promise((resolve, reject) => { const savemode = 2 let bucketname = 'mobox3' if (isPublic) bucketname = public_bucketname let apiUrl = `${svrUrl}/oss/uldurl?method=post&svrinfo=${svrinfo}&savepath=${savepath}&savemode=${savemode}&bucketname=${bucketname}` uni.request({ url: apiUrl + (isPublic ? "&bucketpolicy=public" : ""), method: "GET", success: (result) => { if (result.statusCode != 200) { return reject({ errMsg: "访问失败,状态码:" + result.statusCode }) } var ret = result.data if (ret.code == 0) { ret.data.bucketname = bucketname return resolve(ret.data); } else { reject({ errMsg: ret.msg }); } }, fail: (err) => { console.log("fail", err) return reject(err); } }) }) } // 得到文件下载地址 export const getDownloadUrl = (svrUrl, svrinfo, fileid, filename) => { return new Promise((resolve, reject) => { let apiUrl = `${svrUrl}/oss/dldurl?svrinfo=${svrinfo}&fileid=${fileid}&filename=${filename}` uni.request({ url: apiUrl, method: "GET", success: (result) => { if (result.statusCode != 200) { return reject({ errMsg: "访问失败,状态码:" + result.statusCode }) } var ret = result.data // console.log("getDownloadUrl", ret) if (ret.code == 0) { return resolve(ret.data); } else { reject({ errMsg: ret.msg }); } }, fail: (err) => { console.log("fail", err) return reject(err); } }) }) } // 上传文件 export const putFile = (apiUrl, file) => { console.log("putFile", apiUrl, file) return new Promise((resolve, reject) => { const app = getApp() const fileSystemManager = uni.getFileSystemManager(); // 文件路径,这里以uniapp项目中的某个文件为例 const filePath = file.path // 读取文件 // const task = uni.request({ // url: filePath, // method: "GET", // success: function(res) { // console.log("readFile", res) // const task = uni.request({ // url: apiUrl, // method: "PUT", // header: { // 'content-type': 'application/octet-stream', // 'Content-Length': data.byteLength // }, // data: res, // success: (result) => { // console.log("result", result) // resolve(); // }, // fail: (err) => { // console.log("fail", err) // reject(err); // } // }) // }, // fail: function(error) { // console.log("fail", error) // reject(error); // } // } // ) console.log("readFile", filePath) fileSystemManager.readFile({ filePath: filePath, position: 0, // encoding:"binary", success: function(res) { let data = res.data; console.log("readFile res", res) // const arrayBuffer = new Uint8Array(res.data) // const string = String.fromCharCode.apply(null,arrayBuffer) // const string = Base64.decode(data) // console.log(string); const task = uni.request({ url: apiUrl, method: "PUT", // header: { // 'content-type': 'application/octet-stream', // 'Content-Length': data.byteLength // }, data: res.data, success: (result) => { console.log("result", result) resolve(); }, fail: (err) => { console.log("fail", err) reject(err); } }) }, fail: function(error) { console.log("fail", error) reject(error); } }); }) } export const uploadTask = (apiUrl, file, formData, cbSuccess, cbProgress, cbFail) => { const app = getApp() const path = file.path let fileType = "" //#ifdef MP-DINGTALK fileType = "image" if (TaskInit.fileUtils.isPictureType(file.name)) //文档 { fileType = "image" } else if (TaskInit.fileUtils.isVideoType(file.name)) //视频 { fileType = "video" } else if (TaskInit.fileUtils.isAudioType(file.name)) //音频 { fileType = "audio" } else if (TaskInit.fileUtils.isDocumentType(file.name)) //文档 { fileType = "pdf" } //#endif console.log("uploadTaskFileMinio ", path) const task = uni.uploadFile({ url: apiUrl, filePath: path, name: "file", fileType: fileType, formData: formData, success: (result) => { console.log("uploadTaskFileMinio success", result) if (result.statusCode == 204 || result.statusCode == 200) { cbSuccess(result); } else { console.log("uploadTaskFileMinio fail", result) var res = {} res.errMsg = result.data ? result.data : '上传返回错误!'; res.path = file.path cbFail(res); } }, fail: (result) => { console.log("uploadTaskFileMinio fail", result) var res = {} res.errMsg = result.errMsg ? result.errMsg : '上传异常!'; res.path = file.path cbFail(res); } }) task.onProgressUpdate((res) => { console.log('上传进度' + res.progress); // console.log('已经上传的数据长度' + res.totalBytesSent); // console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend); res.path = file.path cbProgress(res, task) }); return task; } // 写数据库 export const callback = ( svrUrl, savepath, filesize, filename, md5, userlogin, username, access, secret ) => { let apiUrl = `${svrUrl}/oss/uldcallback` let bucket = 'mobox3' let apptype = 'mobox3' let isbase64 = 'N' // console.log("callback apiUrl", apiUrl) return new Promise((resolve, reject) => { uni.request({ url: apiUrl, method: "POST", data: { bucket, savepath, filesize, filename, apptype, md5, userlogin, username, isbase64, access, secret }, success: (result) => { if (result.statusCode != 200) { return reject({ errMsg: "访问失败,状态码:" + result.statusCode }) } var ret = result.data // console.log("callback", ret) if (ret.code == 0) { return resolve(ret.data); } else { reject({ errMsg: ret.msg }); } }, fail: (err) => { console.log("fail", err) return reject(err); } }) }) }