Linode 存储与 NodeJs

问题描述 投票:0回答:2

我是 linode 的新手。我看到 linode 仅提供 aws s3 云存储。我想在我的nodejs应用程序中使用它。我找不到任何sdk来像s3那样做任何解决方案,请帮助我。

任何人都可以告诉我如何使用 javascript 将文件从 nodejs 上传到 linode 存储

javascript node.js linode
2个回答
0
投票

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 代码示例都应该可以,有很多。


0
投票

有人尝试过将多个部分上传到Linode S3吗?如果是这样,请分享示例。

© www.soinside.com 2019 - 2024. All rights reserved.