前端上传文件到金山云存储
前端上传文件到金山云存储获取签名封装方法使用运行结果获取签名上传文件之前公司文件都是用的腾讯云或阿里云的对象存储,现在有个项目甲方要使用金山云存储。在网上找了一下,暂时没有踩坑文章,现记录总结一下。目前在项目中使用POST Object的方式上传,相关文档参考:对象存储(KS3)POST Object-金山云获取签名import request from '@/utils/request'expo
·
之前公司文件都是用的腾讯云或阿里云的对象存储,现在有个项目甲方要使用金山云存储。在网上找了一下,暂时没有踩坑文章,现记录总结一下。
目前在项目中使用POST Object的方式上传,相关文档参考:对象存储(KS3)POST Object-金山云
获取签名
import request from '@/utils/request'
export default class CommonServer{
// 获取金山云上传签名
static getKsOssSign () {
return request({
url: '/common/ks_oss_sign/',
method: 'post'
})
}
}
封装方法
import axios from 'axios'
import moment from 'moment'
export const OSS_URL = 'https://ks3-cn-beijing.ksyun.com/xxxx' // 金山云上传域名
// 文件扩展名提取
export const fileType = fileName => fileName.substring(fileName.lastIndexOf('.') + 1)
/**
* oss路径定义
* @param file
*/
export const ossPath = file => {
const folder = moment().format('YYYY-MM-DD')
if (file.name) {
return `admin/upload/${folder}/${fileType(file.name)}/${file.name}`
}
}
/**
* 金山云上传
* @returns {Promise<unknown>}
*/
export const ksOssUpload=file=>{
return new Promise((resolve, reject) => {
CommonServer.getKsOssSign().then(res => {
const { accessid, policy, signature } = res
const formData = new FormData()
const key = ossPath(file)
formData.append('acl', 'public-read')
formData.append('key', key)
formData.append('signature', signature)
formData.append('KSSAccessKeyId', accessid)
formData.append('policy', policy)
formData.append('file', file)
axios.post(OSS_URL, formData).then(res => {
const { status } = res
if (status === 200) {
const data = {
url: `${OSS_URL}/${key}`,
type: fileType(file.name)
}
resolve(data)
} else {
reject(res)
}
}).catch(err => {
reject(err)
})
}).catch(err => {})
})
}
使用
const res =await ksOssUplad(file)
运行结果
获取签名
上传文件
更多推荐
已为社区贡献1条内容
所有评论(0)