📅  最后修改于: 2023-12-03 14:52:00.423000             🧑  作者: Mango
阿里云的对象存储服务(Object Storage Service,简称OSS)是一种海量、安全、低成本、高可靠的云存储服务。它可以存储任意格式的数据,包括图片、音视频、文本等等。本文将介绍如何使用 node.js 和 Express 上传文件到阿里云 OSS。
在开始本文之前,你需要具备以下环境:
首先,我们需要在后端服务中配置 oss 模块。在 app.js
文件中,添加如下代码:
const OSS = require('ali-oss');
const ossClient = new OSS({
accessKeyId: 'AccessKeyId',
accessKeySecret: 'AccessKeySecret',
bucket: 'Bucket名称',
region: 'Bucket所在的区域',
});
app.set('ossClient', ossClient);
其中,AccessKeyId
和 AccessKeySecret
是在阿里云控制台上创建的 AccessKey 信息,Bucket名称
是你在创建的 OSS Bucket 的名称,Bucket所在的区域
是你的 OSS Bucket 所在的地理区域。你可以在阿里云官网查看 OSS Bucket 的地理位置。
在前端页面中,我们需要添加一个上传文件的表单:
<form id="uploadForm" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
接下来,我们需要在前端页面中编写 JavaScript 代码,使用 AJAX 发送上传文件的请求:
const form = document.querySelector('#uploadForm');
form.addEventListener('submit', (event) => {
event.preventDefault();
const file = event.target.file.files[0];
const formData = new FormData();
formData.append('file', file);
$.ajax({
url: '/upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: (data) => {
console.log(data);
},
error: (err) => {
console.error(err);
},
});
});
在上面的示例中,我们首先获取了用户上传的文件,然后将其封装为 FormData 对象,再通过 AJAX 发送到后端服务进行处理。
在后端服务中,我们需要添加一个路由来处理上传请求。在 app.js
文件中,添加如下代码:
const ossClient = app.get('ossClient');
app.post('/upload', async (req, resp) => {
try {
const file = req.files.file;
const result = await ossClient.put(file.name, file.path);
resp.send(result);
} catch (err) {
console.error(err);
resp.status(500).send(err.message);
}
});
在上面的代码中,我们首先从请求中提取出上传的文件,然后调用 AliOSS 的 put
方法来上传文件到 OSS Bucket 中。