//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);
|
}
|
})
|
})
|
}
|