我是 linode 的新手。我看到 linode 仅提供 aws s3 云存储。我想在我的nodejs应用程序中使用它。我找不到任何sdk来像s3那样做任何解决方案,请帮助我。
任何人都可以告诉我如何使用 javascript 将文件从 nodejs 上传到 linode 存储
linode 也是新手。获得了 100 美元的 2 个月免费试用,我想我应该尝试一下存储桶功能。
我过去使用过 AWS S3,就 SDK 而言,这几乎是相同的。这里唯一的障碍是配置端点。使用 AWS S3,您可以放置区域,而使用 linode,您可以放置端点。端点列表在这里:
https://www.linode.com/docs/products/storage/object-storage/guides/urls/#cluster-url-s3-endpoint
正如您没有提到您是否想要服务器(nodejs)或浏览器上的示例,我将使用我已有的示例。它适用于 Nodejs(服务器端)。
步骤
我使用的是 Node stable(目前是 18.7)。我设置了 package.json 来启动 index.js 脚本(例如 "scripts": {"start": "node index.js"})。
安装aws-sdk
npm i aws-sdk
index.js 代码
const S3 = require('aws-sdk/clients/s3')
const fs = require('fs')
const config = {
endpoint: 'https://us-southeast-1.linodeobjects.com/',
accessKeyId: 'BLEEPBLEEPBLEEP',
secretAccessKey: 'BLOOPBLOOPBLOOP',
}
var s3 = new S3(config)
function listObjects() {
console.debug("List objects")
const bucketParams = {
Bucket: 'vol1'
}
s3.listObjects(bucketParams, (err, data) => {
if(err) {
console.error("Error ", err)
} else {
console.info("Objects vol1 ", data)
}
})
}
function uploadFile() {
const fileStream = fs.createReadStream('./testfile.txt')
var params = {Bucket: 'vol1', Key: 'testfile', Body: fileStream}
s3.upload(params, function(err, data) {
if(err) {
console.error("Error uploading test file", err)
} else {
console.info("Test file uploaded ", data)
listObjects()
}
})
}
// Start
uploadFile()
运行“npm start”。
我得到的输出:
Test file uploaded {
ETag: '"0ea76c859582d95d2c2c0caf28e6d747"',
Location: 'https://vol1.us-southeast-1.linodeobjects.com/testfile',
key: 'testfile',
Key: 'testfile',
Bucket: 'vol1'
}
List objects
Objects vol1 {
IsTruncated: false,
Marker: '',
Contents: [
{
Key: 'Inflation isnt transitory.mp4',
LastModified: 2023-01-10T15:38:42.045Z,
ETag: '"4a77d408defc08c15fe42ad4e63fefbd"',
ChecksumAlgorithm: [],
Size: 58355708,
StorageClass: 'STANDARD',
Owner: [Object]
},
{
Key: 'testfile',
LastModified: 2023-02-13T20:28:01.178Z,
ETag: '"0ea76c859582d95d2c2c0caf28e6d747"',
ChecksumAlgorithm: [],
Size: 18,
StorageClass: 'STANDARD',
Owner: [Object]
}
],
Name: 'vol1',
Prefix: '',
MaxKeys: 1000,
CommonPrefixes: []
}
使用您自己的信用/数据中心调整配置。希望这有帮助。
注意:如果您要上传> 1GB的文件,则需要使用分段上传功能。它有点复杂,但这应该可以帮助您入门。任何 AWS S3 代码示例都应该可以,有很多。
有人尝试过将多个部分上传到Linode S3吗?如果是这样,请分享示例。