file upload挂在生产代码上,但在本地工作 – multer,node.js

我正在写快速3,现在我们升级到expression4,我有一个file upload的问题。 一切工作在我的本地计算机mac OSX,但不能在Ubuntu的生产服务器上工作。

我正在上传zip文件,里面有png和psd。

我正在上传文件的多部分forms:与multer中间件。

当地一切都好,但在生产环境中,连接正在打破。 文件开始上传到主上传根,但作为一个块的一部分,例如我上传50 MB的zip文件,但上传大约30 kb和连接中断,因为上传数据块的onFileDataupload事件是中断。

app.js中的设置

我的身体分析器设置:

app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false }) ); 

我的Muller设置:

 app.use(multer({ dest: './upload', limits: { fieldNameSize: 500, files: 2, fields: 20, fileSize: 200 * 1024 * 1024 }, rename: function (fieldname, filename) { return fieldname + filename + Date.now(); }, onFileUploadStart: function (file) { console.log('Upload starting for filename: ' + file.originalname); }, onFileUploadData: function (file, data) { // console.log(data.length + ' of ' + file.fieldname + ' arrived') }, onParseStart: function () { console.log('Form parsing started at: ', new Date()) }, onParseEnd: function (req, next) { console.log('Form parsing completed at: ', new Date()); // usage example: custom body parse //req.body = require('qs').parse(req.body); // call the next middleware next(); }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path); }, onFileSizeLimit: function (file) { console.log('Failed: ', file.originalname) fs.unlink('./' + file.path) // delete the partially written file }, onFilesLimit: function () { console.log('Crossed file limit!') }, onFieldsLimit: function () { console.log('Crossed fields limit!') }, onPartsLimit: function () { console.log('Crossed parts limit!') }, onError: function(error, next) { console.log("Error occurred while uploading the file!!"); next(error); } 

}));

我也尝试作为替代强大,我也有同样的问题,本地工作,不生产环境。 我认为这可能是一个问题,请求节点managin。 关于生产环境,我们使用pm2。 当file upload时,滑动正在断开连接。

有没有人有maby类似的问题,并find一个解决scheme? 谢谢

你可能有pm2与“看”选项启用; 并在观看的目录中上传文件。 然后pm2重新启动应用程序,每次你开始写新文件(因为代码重新加载)。

要检查是否解决了你的问题,只需从jour process.json中删除“watch”:true或从命令行中删除标志–wath。 如果正在工作,阅读有关pm2手表忽略这里: https : //github.com/Unitech/PM2/blob/master/ADVANCED_README.md#watch–restart ,并正确地为您的env&应用程序进行configuration。