为了将大文件存储进行上传并且下载,可能会采取阿里云对象存储OSS,以下根据官网Browserjs进行总结
const client = new OSS ({配置项})
client.put(文件名,文件,[{headers}])
client.MultipartUpload (文件名,文件,{...args} )
参数args:
progress: (p,cpt,res)=>{abortCheckpoint=cpt}
//abortCheckpoint是变量名
//然后使用
client.absortMultipartUpload(abortCheckpoint.name,absortCheckpoint.uploadId)
client.listParts(name,absortCheckpoint.uploadId).then({})
client.listUploads({参数})
client.multipartUpload(文件名,文件,{checkpoint:abortCheckpoint,
progress:(p,cpt,res)=>{checkpoint=cpt})
可使用在各种请求中,
{callback:{
url:””,//回调请求的服务器地址
host:’’,//为服务器配置的host值
body:”” //发起回调时请求body的值
contentType:’’, //发起回调请求的content-type
customValue:{}, //发起回调请求的自定义参数}}
url= client.signatureUrl (object完整路径不包括bucket名,{可选参数})
const filename = 'examplefile.txt'
const response = {
'content-disposition': `attachment; filename=${encodeURIComponent(filename)}`
}
const url= client.signatureUrl (object完整路径不包括bucket名,{response})
const start=0, end=999
client.get(object完整路径不包括bucket名,{
headers:{
Range:`bytes=${start}-${end}`,
}}) .then(r => {
// 将返回的数据通过Blob的形式转为可下载的Object。
const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
// 创建标签。
const link = document.createElement('a')
// 将标签绑定href属性。
link.href = window.URL.createObjectURL(newBlob)
// 指定下载后的本地文件名称。
link.download = 'example.txt'
// 下载Object。
link.click()
// 移除绑定的URL。
window.URL.revokeObjectURL(link.href)
})
client.get(object完整路径不包括bucket名, {
headers: {
// 在请求头If-Modi ed-Since中指定时间,如果指定的时间早于文件实际修改时间,则下载文
件。如果指定的时间等于或者晚于文件实际修改时间,则返回304 Not Modi ed。
"If-Modi ed-Since": new Date("1970-01-01").toGMTString()// 在请求头If-Unmodi ed-Since中指定时间,如果指定的时间等于或者晚于文件实际修改时间,
则下载文件。如果指定的时间早于文件实际修改时间,则返回412 Precondition Failed。
"If-Unmodi ed-Since": new Date(1970-01-01).toGMTString()
// 在请求头If-Match中传入ETag,如果传入的ETag和文件的ETag匹配,则下载文件。如果传入
的ETag和文件的ETag不匹配,则返回412 Precondition Failed。
"If-Match": '5B3C1A2E0563E1B002CC607C****'
// 在请求头If-None-Match中传入ETag,如果传入的ETag和文件的ETag不匹配,则下载文件。
如果传入的ETag和文件的ETag匹配,则返回304 Not Modi ed。
"If-None-Match": '5B3C1A2E0563E1B002CC607C****'
},
}).then(r => {
if (r.content.length > 0) {
const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
const link = document.createElement('a')
link.href = window.URL.createObjectURL(newBlob)
link.download = 'foo.txt'
link.click()
window.URL.revokeObjectURL(link.href)
} else {
console.log('错误码', r.res.status)
console.log('没有符合条件的下载项')
}
})
简单上传→ PutObject
初始化分片上传→InitialMultipartUpload
分片上传part →UploadPart
完成分片上传→CompleteMultipartUpload
取消分片上传事件→AbortMultipartUpload
列举已上传分片→ListParts
列举分片上传事件→ListMultipartUploads
上传回调→Callback
下载→GetObject