Таким образом, единственное изменение между использованием промежуточного программного обеспечения express-fileupload заключается в том, что req.files == null вместо undefined (req.files
не определено, когда я не использую express-fileupload, я не думаю, что мне нужноиспользуя это хотя?).Очевидно, что серверный скрипт останавливается на excel = req.files.myFile.path;
, так как он не может прочитать свойство myFile
с нулевым или неопределенным значением.Я в недоумении - я почти уверен, что это проблема с моим сценарием переднего плана, но я не очень хорошо разбираюсь в ajax, и комбинация нативных JS и JQuery может меня испортить?
//Front end:
var App = {};
App.handleFileUpload = function handleFileUpload(event) {
var files = event.target.files;
var myFile = files[0];
that.sendFile(myFile);
}
$('#fileUpload').on('change', function(event) {
App.handleFileUpload(event)
},
sendFile = function sendFile(file) {
var uri = 'http://MYIP/getsheet';
var xhr = new XMLHttpRequest();
var fd = new FormData();
xhr.open('POST', uri, true);
fd.append('myFile', file);
xhr.send(fd);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
var log = xhr.responseText;
makeDivs(JSON.parse(log));
console.log(log);
}
}
});
//Server:
const express = require('express');
var app = express();
const path = require('path');
const ce2j = require('convert-excel-to-json');
const moment = require('moment');
const fu = require('express-fileupload');
app.use(fu());
var log;
app.post('/getsheet', function(req, res){
console.log(req.files);
excel = req.files.myFile.path;
etc...
<body>
<input type ="file" name ="excel" id="fileUpload" />
<div id = "main"></div>
</body>
Я пробовал как с набором <form enctype>
, так и без него, и это не имеет никакого значения (я тоже не думаю, что должно?).