ToB企服应用市场:ToB评测及商务社交产业平台
标题:
node.js 前端直接分片上传文件与阿里云OSS的方法
[打印本页]
作者:
泉缘泉
时间:
2024-8-2 04:15
标题:
node.js 前端直接分片上传文件与阿里云OSS的方法
办理题目:直接由用户上传文件至阿里云OSS,而非颠末中间件/后端
官方文档:分片上传 (aliyun.com)
在官方文档中,提供的方法是由中间件上传至oss,调用了path库,但是在浏览器用户没有那么大的权限,我们关注到文档中此表:
类型参数说明必选参数name {String}Object完整路径,Object完整路径中不能包罗Bucket名称。file {String|File}表现文件路径或者HTML5文件。 在必选参数中除了提供path,还可以提供HTML5文件,也就是我们常说的file。
给出如下办理:
const OSS = require('ali-oss');
const path = require("path");
let elm = document.getElementById('fileInput')
uploadFile = null
elm.onchange = function (e) {
let files = e.target.files
let uploadFile = files[0]
let render = new FileReader()
const client = new OSS({
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// 填写Bucket名称,例如examplebucket。
bucket: 'examplebucket',
});
const progress = (p, _checkpoint) => {
// Object的上传进度。
console.log(p);
// 分片上传的断点信息。
console.log(_checkpoint);
};
const headers = {
// 指定Object的存储类型。
'x-oss-storage-class': 'Standard',
// 指定Object标签,可同时设置多个标签。
'x-oss-tagging': 'Tag1=1&Tag2=2',
// 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。
'x-oss-forbid-overwrite': 'true'
}
async function multipartUpload() {
try {
const result = await client.multipartUpload('exampledir/exampleobject.txt', uploadFile, {
progress,
meta: {
year: 2020,
people: 'test',
},
});
console.log(result);
const head = await client.head('exampledir/exampleobject.txt');
console.log(head);
} catch (e) {
if (e.code === 'ConnectionTimeoutError') {
console.log('TimeoutError');
// do ConnectionTimeoutError operation
}
console.log(e);
}
}
multipartUpload();
复制代码
之后调用multipartUpload()即可。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4