准备工作
要在 Express 项目中实现 OSS(对象存储服务)上传功能,你需要做以下准备:
- 创建 OSS 账户和存储桶:首先,你需要在 OSS 提供商(如阿里云、AWS S3 等)创建一个账户,并在账户中创建一个存储桶。
- 获取 OSS 访问密钥:你需要获取 OSS 的访问密钥,包括 Access Key ID 和 Access Key Secret。这些密钥将用于在你的 Express 应用中访问 OSS。
- 安装 OSS SDK:大多数 OSS 提供商都提供了 Node.js SDK,你可以在你的 Express 项目中安装这个 SDK。例如,如果你使用的是阿里云 OSS,你可以使用 npm 安装阿里云 OSS 的 Node.js SDK:
npm install ali-oss
OSS上传
在准备工作完成后,你可以开始编写上传到 OSS 的代码。以下是一个使用阿里云 OSS Node.js SDK 的示例:
const OSS = require('ali-oss');
let client = new OSS({
region: '<Your region>',
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>',
bucket: '<Your bucket name>',
});
let upload = async function () {
try {
let result = await client.put('object-name', 'local-file');
console.log(result);
} catch (e) {
console.log(e);
}
}
upload();
在这个示例中,你需要替换 <Your region>
、<Your AccessKeyId>
、<Your AccessKeySecret>
和 <Your bucket name>
为你的 OSS 账户信息。
其中,在阿里云 OSS 中,region
是指你的 OSS 存储桶所在的地理区域。每个 OSS 存储桶都会在一个特定的地理区域中创建,这个区域就是 region
。例如,如果你在中国华东 1(杭州)区域创建了一个 OSS 存储桶,那么你的 region
就是 'oss-cn-hangzhou'
。
你可以在 OSS 提供商的官方文档中找到更多关于如何使用 SDK 的信息。例如,阿里云 OSS 的 Node.js SDK 文档地址是:www.alibabacloud.com/help/doc-de…
请注意,上传文件到 OSS 通常涉及到文件的读取和上传两个步骤,你可能需要处理来自用户的文件上传请求,然后将文件上传到 OSS。
以下示例,已知图片线上地址(AI生成图片),上传到OSS的完整示例
const path = require('path');
const https = require('https');
const OSS = require('ali-oss');
const { v4: uuidv4 } = require('uuid');
let client = new OSS({
region: 'oss-cn-hangzhou',
accessKeyId: 'xxx',
accessKeySecret: 'xxx',
bucket: 'ugc-xxx',
});
const OSS_DIR = 'v1-3views-img/';
const ossUpload = async (url) => {
const request = https.get(url);
const response = await new Promise((resolve, reject) => {
request.on('response', resolve);
request.on('error', reject);
});
try {
const file = {
name: OSS_DIR + uuidv4() + path.extname(url),
content: response
};
const result = await client.put(file.name, file.content);
return result.url;
} catch (error) {
console.error(`Error: ${error.message}`);
throw error;
}
};
module.exports = { ossUpload }