Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express 如何修复错误->;NetworkingError:读取EconReset,无法在将头发送到客户端后设置头_Express_Amazon S3_File Upload_Multer - Fatal编程技术网

Express 如何修复错误->;NetworkingError:读取EconReset,无法在将头发送到客户端后设置头

Express 如何修复错误->;NetworkingError:读取EconReset,无法在将头发送到客户端后设置头,express,amazon-s3,file-upload,multer,Express,Amazon S3,File Upload,Multer,我曾尝试使用multer软件包将大文件上传到aws s3位置存储。我提到了我的代码。已成功上载多达5 kb的文件。但是大文件没有上传。 请任何人建议我 这是我的路线文件 module.exports = app => { const s3 = require("../controllers/s3.controller.js"); const multer = require('multer'); const crypto = require("cr

我曾尝试使用multer软件包将大文件上传到aws s3位置存储。我提到了我的代码。已成功上载多达5 kb的文件。但是大文件没有上传。 请任何人建议我

这是我的路线文件

module.exports = app => {
  const s3 = require("../controllers/s3.controller.js");
  const multer = require('multer');
  const crypto = require("crypto");
  var storage = multer.memoryStorage();
  var upload = multer({storage: storage});  
  var router = require("express").Router();
  router.post('/upload', upload.single("file"), s3.doUpload);
};
s3.controller.js

const s3 = require('../config/s3.config');
const s3BucketName = process.env.BUCKET;

exports.doUpload =  (req, res) => {
    let bucketName = s3BucketName;
    bucketName = bucketName + "/testingCourse";
    const params = {
        Bucket: bucketName,
        Key: req.file.originalname, 
        Body: req.file.buffer
    }
    s3.upload(params, (err, data) => { 
        if (err) {
            res.status(500).send("Error -> " + err);
        }
        res.send({
          status:200,
          message:"OK",
          data:req.file.originalname 
        });
    });
}
文件没有上传,我得到了回复

F:\newapi\node_modules\aws-sdk\lib\request.js:31
            throw err;
            ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:526:11)
    at ServerResponse.header (F:\newapi\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (F:\newapi\node_modules\express\lib\response.js:170:12)
    at ServerResponse.json (F:\newapi\node_modules\express\lib\response.js:267:15)
    at ServerResponse.send (F:\newapi\node_modules\express\lib\response.js:158:21)
    at ManagedUpload.callback (F:\newapi\app\controllers\s3.controller.js:21:7)
    at ManagedUpload.cleanup (F:\newapi\node_modules\aws-sdk\lib\s3\managed_upload.js:629:10)
    at Response.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\s3\managed_upload.js:566:28)
    at Request.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\request.js:369:18)
    at Request.callListeners (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
    at Request.emit (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (F:\newapi\node_modules\aws-sdk\lib\request.js:688:14)
    at Request.transition (F:\newapi\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (F:\newapi\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at F:\newapi\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\request.js:38:9)
    at Request.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\request.js:690:12)
    at Request.callListeners (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:116:18)
    at Request.emit (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (F:\newapi\node_modules\aws-sdk\lib\request.js:688:14)
    at Request.transition (F:\newapi\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (F:\newapi\node_modules\aws-sdk\lib\state_machine.js:14:12) {
  message: 'Cannot set headers after they are sent to the client',
  code: 'ERR_HTTP_HEADERS_SENT',
  time: 2020-09-15T10:50:27.365Z
}
F:\newapi\node\u modules\aws sdk\lib\request.js:31
犯错误;
^
错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头
在ServerResponse.setHeader(_http_outgoing.js:526:11)
在ServerResponse.header(F:\newapi\node\u modules\express\lib\response.js:771:10)
在ServerResponse.send(F:\newapi\node\u modules\express\lib\response.js:170:12)
在ServerResponse.json(F:\newapi\node\u modules\express\lib\response.js:267:15)
在ServerResponse.send(F:\newapi\node\u modules\express\lib\response.js:158:21)
在ManagedUpload.callback(F:\newapi\app\controllers\s3.controller.js:21:7)
在ManagedUpload.cleanup(F:\newapi\node\u modules\aws sdk\lib\s3\managed\u upload.js:629:10)
在回答时。(F:\newapi\node\u modules\aws sdk\lib\s3\managed\u upload.js:566:28)
应要求。(F:\newapi\node\u modules\aws sdk\lib\request.js:369:18)
at Request.callListeners(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:106:20)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:78:10)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\Request.js:688:14)
at Request.transition(F:\newapi\node\u modules\aws sdk\lib\Request.js:22:10)
在AcceptorStateMachine.runTo(F:\newapi\node\u modules\aws sdk\lib\state\u machine.js:14:12)
位于F:\newapi\node\u modules\aws sdk\lib\state\u machine.js:26:10
应要求。(F:\newapi\node\u modules\aws sdk\lib\request.js:38:9)
应要求。(F:\newapi\node\u modules\aws sdk\lib\request.js:690:12)
at Request.callListeners(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:116:18)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:78:10)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\Request.js:688:14)
at Request.transition(F:\newapi\node\u modules\aws sdk\lib\Request.js:22:10)
在AcceptorStateMachine.runTo(F:\newapi\node\u modules\aws sdk\lib\state\u machine.js:14:12){
消息:“发送到客户端后无法设置标头”,
代码:“ERR_HTTP_HEADERS_SENT”,
时间:2020-09-15T10:50:27.365Z
}
任何人请推荐我


感谢您出现此错误,因为当您收到错误时,您正在发送一个响应,之后您也将发送一个状态为200的响应

所以,只要在出现任何错误时返回该响应即可

if (err) {
          return res.status(500).send("Error -> " + err);
        }