Я работаю на простом сайте загрузки файлов, и у меня возникают проблемы с последовательной загрузкой файлов без ошибок. Код, который у меня есть, теперь отлично работает, когда загружаемый файл меньше, чем ~ 20 КБ, но для файлов, размер которых больше этого, но меньше, чем ~ 1 МБ, загружается только около ~ 20 КБ файла (что приводит к повреждению файла).
Для файлов размером более 1 МБ загрузка завершается неудачно и возвращает ошибку 502. Я был уверен, что увеличил лимит размера файлов / полей мультитера и никогда не получал слишком большую ошибку файла.
при загрузке файла размером ~ 20kb-1mb нет ошибок внешнего интерфейса или внутреннего интерфейса, но кажется, что multer «зависает» при загрузке и никогда не достигает функции обратного вызова при загрузке.
РЕДАКТИРОВАТЬЯ удалил код внешнего интерфейса, так как это похоже на ошибку узла / конфигурации
файл app.js (неактуальный код удален)
const express = require('express');
const multer = require('multer');
const path = require('path');
const bodyParser = require('body-parser');
const glob = require('glob');
const fs = require('fs');
const app = express();
const PORT = process.env.PORT || 3000;
const storage = multer.diskStorage({
destination: function(req, file, callback) { callback(null, './public/file') },
filename: function(req, file, callback) { callback(null, req.fileCode + '-' + file.originalname) },
});
const upload = multer({storage: storage, limits: {fileSize: 1024 * 1024 * 1024, fieldSize: 10000000000}}).single('selectedFile');
app.use(bodyParser.json({ limit: '5mb', extended: true })); //added from user suggestions
app.use(bodyParser.urlencoded({ limit: '5mb', extended: true }));
app.use(express.static(path.join(__dirname, 'public', 'media', 'styles.css')));
app.use(express.static(path.join(__dirname, 'public', 'media', 'scripts.js')));
app.get(["/","/index.html.var"], (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
app.post('/upload-file', function(req, res) {
let fileCode = genFileCode();
glob("**/public/file/" + fileCode + "*.*", function (err, files) {
if(files[0])
fileCode = genFileCode();
req.fileCode = fileCode;
console.log("check 1");
upload(req, res, function(e) {
console.log("check 2");
if(e)
console.log("error " + e);
else
console.log("no error");
});
res.send(fileCode);
});
});
^^ один и тот же файл (~ 370kb) загружается несколько раз, и все они имеют разные размеры и ни один из них не является полным файлом (все повреждены)
^^ Ошибка 502 возникает при загрузке любого файла размером более ~ 1 МБ