因浏览器只支持header添加签名信息,故该方式不支持在web使用,但可以在服务端使用,以nodejs-SDK为例如下所示:
function uploadByUrl () {
// 先通过sdk获取上传链接, 然后再通过put方式上传
const body = fs.createReadStream(filePath)
const stat = fs.statSync(filePath)
client.object.generatePresignedUrl({
Bucket: bucketName,
Key: 'url-upload.mp4', // 保存到ks3的名字
expiration: 5 * 60, // 外链有效时长
method: 'put' // 外链上传只能是put方式
}, function (res, data) {
console.log('url: ', data)
// 以下为具体的上传,可自行实现。注意事项:1、必须为put方式,2、content-length必传
request({
method: 'put',
uri: data,
headers: {
'Content-Length': stat.size
}
}, body, '', cb);
})
}
uploadByUrl();