0

我尝试使用 OVH 对象存储上传文件。但是根据重文件,我有三种不同的行为。

  • 重量文件小于100Ko,一切正常

  • 使用超过 100Ko 的权重文件,我有这个错误:Error: write after end,但文件上传到 ovh 对象存储

  • 对于超过 250Ko 的权重文件,没有任何反应,并且文件没有上传。fs ReadStream 已打开,但通过管道传输的写入流(与读取流一起)未完成。

这是我的代码:

  var client = require('pkgcloud').storage.createClient({
    provider: 'openstack',
    username: myusername,
    password: mypassword,
    region: 'GRA',
    authUrl: 'https://auth.cloud.ovh.net/'
  });

  const fsReadStream = fs.createReadStream(path.resolve(__dirname, fileLocation))

  let writeStream = client.upload({
    container: myOvhStorageContainer,
    remote: 'fileName.jpg',
  });

  writeStream.on('error', function (err) {

    console.log(err)
  });

  writeStream.on('success', async function (file) {
    console.log(file)
  });

  fsReadStream.on('open', function () {
    console.log('open!!')

    fsReadStream.pipe(writeStream);
  });
4

1 回答 1

1

问题来自pkgcloud中的一个错误,即它如何为 OpenStack 存储流式传输文件。

该解决方案已公开,并在https://github.com/pkgcloud/pkgcloud/pull/673中提出了修复建议

pkgcloud有一些分支,其中包含建议的修复程序,可以在等待修复程序被正式接受时使用它们:

要在您的项目/应用程序中使用这样的存储库,请编辑您package.json以进行dependencies如下修改:

"dependencies": {
    …
    "pkgcloud": "https://github.com/madarche/pkgcloud.git#fe2701eb6eb984e3d067d5df7610ca0751528dbd",
    …
  },

您也可以简单地创建自己的 pkgcloud 分支,因此您不必信任随机的 Git 存储库。

于 2020-03-21T12:00:14.033 回答