经过数小时的研究,我遇到了以下问题。我已经看到了很多关于该主题的问题和答案,但是对我没有任何帮助:(
我正在构建一个具有拖放文件上传功能的Electron应用程序。我正在使用已实现express
的{{1}}服务器来处理文件上传。当我使用multer
时,文件上传工作正常:
客户端
:fetch
服务器端
uploadFile = (file) => {
formData.append('file', file);
}
var formData = new FormData();
([...files]).forEach(uploadFile);
fetch('/uploadLogs', {
method: 'POST',
body: formData
}).then(...)
我正在使用var express = require('express');
var bodyParser = require('body-parser')
var multer = require('multer');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
var memStorage = multer.memoryStorage();
var uploadToMemory = multer({ storage: memStorage })
app.post('/uploadLogs', uploadToMemory.any(), (req, res, next) => {
const files = req.files;
if (!files) {
const error = new Error('Please choose files')
error.httpStatusCode = 400
return next(error)
}
...
})
,并尝试使用serverside rendering,它使用JQuery / AJAX从服务器而不是从客户端加载数据,因为我希望上传时从服务器返回数百万行文件(这就是我需要停止使用DataTables
的原因)。当我如下更改客户端代码时:
fetch
我在响应中收到以下异常消息,响应代码为$('#table').DataTable( {
serverSide: true,
ajax: {
url: url,
method: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(data){
console.log(data);
},
error: function(err) {
console.error(err)
}
},
// data: logs,
columns: tableHeaders
});
:
500
我有两个问题:
1)如何解决此问题?我在一些地方(here,here)阅读了需要设置的内容:
Error: Please choose files
at app.post (/Users/me/dev/logreader/server/app.js:41:21)
at Layer.handle [as handle_request] (/Users/me/dev/logreader/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/me/dev/logreader/node_modules/express/lib/router/route.js:137:13)
at multerMiddleware (/Users/me/dev/logreader/node_modules/multer/lib/make-middleware.js:18:41)
at Layer.handle [as handle_request] (/Users/me/dev/logreader/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/me/dev/logreader/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/me/dev/logreader/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/me/dev/logreader/node_modules/express/lib/router/layer.js:95:5)
at /Users/me/dev/logreader/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/me/dev/logreader/node_modules/express/lib/router/index.js:335:12)
AJAX配置中的属性,以重置内容类型。
2)为什么即使我将错误显式设置为 contentType: false,
processData: false,
,也出现500
错误?