vue 选择本地多个文件,批量上传到OSS,具体代码
时间: 2024-10-14 08:04:29 浏览: 14
在Vue.js中,你可以使用`element-ui`库中的`el-upload`组件结合阿里云OSS(Object Storage Service)来进行文件的多选和批量上传。以下是一个基本的示例代码:
首先,你需要安装必要的依赖,包括`vue-element-upload`(用于处理上传)和`ali-oss`(用于阿里云OSS操作):
```bash
npm install element-ui uploadjs ali-oss
```
然后,在你的Vue组件中引入并配置这两个库:
```html
<template>
<div>
<el-upload
:action="uploadUrl"
:multiple="true"
:on-change="handleChange"
:before-upload="beforeUpload"
ref="upload"
>
<i class="el-icon-folder-open"></i> Click to select files
</el-upload>
</div>
</template>
<script>
import { Upload } from 'element-ui';
import OSS from 'ali-oss';
export default {
components: {
Upload
},
data() {
return {
uploadUrl: '<your_oss_bucket_url>', // 阿里云OSS bucket URL
ossClient: null,
};
},
created() {
this.ossClient = new OSS({
region: '<your_oss_region>', // 你的OSS区域
accessKeyId: '<your_access_key>',
accessKeySecret: '<your_secret_key>',
bucket: '<your_bucket_name>', // 你的bucket名称
});
},
methods: {
handleChange(fileList) {
fileList.forEach(file => {
if (file.response.errorCode === 0) {
console.log('File', file.name, 'uploaded successfully');
} else {
console.error('Error uploading file:', file.name);
}
});
},
beforeUpload(file) {
// 检查文件类型、大小等,此处仅做示例,实际应用中需要添加
const isImage = /\.jpg$|\.png$/.test(file.name);
return isImage && file.size <= 5 * 1024 * 1024; // 限制最大5MB
},
async uploadFiles(files) {
for (const file of files) {
await this.ossClient.put(file.name, file);
}
},
},
};
</script>
```
在这个例子中,`beforeUpload`函数会在上传前检查文件类型和大小;`handleChange`会处理每项上传结果,`uploadFiles`则是用于批量上传所有选定的文件。
阅读全文