使用 s3 aws sdk 上传文件时写入结束错误

问题描述

我在 node.js 中使用 s3 (aws sdk) 将文件/图像上传到 Linode 对象存储。 对于非常小的文件(小于 1 MB)工作正常,但是当文件大于 1MB 时会引发以下错误

error Error [ERR_STREAM_WRITE_AFTER_END]: write after end
at writeAfterEnd (_http_outgoing.js:643:15)
at ClientRequest.end (_http_outgoing.js:763:7)
at features.constructor.writeBody ({pathtoproject}/node_modules/aws-sdk/lib/http/node.js:137:14)
at ClientRequest.<anonymous> ({pathtoproject}/node_modules/aws-sdk/lib/http/node.js:102:14)
at ClientRequest.emit (events.js:315:20)
at ClientRequest.EventEmitter.emit (domain.js:485:12)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:605:11)
at HTTPParser.parserOnHeadersComplete (_http_common.js:117:17)
at TLSSocket.socketonData (_http_client.js:507:22)
at TLSSocket.emit (events.js:315:20)

这是我的上传功能

const s3 = require('./index')
const { v4: uuidv4 } = require('uuid');

const uploadFile = (file,bucket) => {
const params = {
    Bucket: bucket,// pass your bucket name
    Key: `${uuidv4()}-${file.originalname}`,// file will be saved as testBucket/contacts.csv
    Body: file.buffer,ContentType: file.mimetype,ACL: 'public-read'
};
return new Promise((resolve,reject) => {
    s3.upload(params,(s3Err,data) => {
        if (s3Err) {
            reject(s3Err)
        } else {
            console.log(`Image uploaded at: ${data}`)
            resolve(data.Location)
        }
    });
 })
}  


module.exports = uploadFile

这是主要配置

var AWS = require("aws-sdk");

AWS.config.loadFromPath('./aws/config.json');

const s3 = new AWS.S3({ httpOptions: { timeout: 10 * 60 * 1000 }});

module.exports = s3

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...