J'ai un point final auquel je poste un fichier .zip et un fichier .xlsx en même temps.ng-file-upload avec Busboy et Node fonctionne localement mais pas sur le serveur
client (angulaire 1):
files.upload = Upload.upload({
url: '/api/files',
data: { xlsxFile: xlsxFile, zipFile: zipFile }
});
files.upload.then(
function (response) {
$scope.state = 'completed';
$scope.message = response.data.data;
},
function (error) {
$scope.state = 'error';
$scope.message = _.get(error, 'data.errors[0].meta.errorObj') || 'An unspecified error occurred, please check your files and try again.';
},
function (evt) {
progress = evt.loaded/evt.total;
}
);
Server (Noeud):
const busboy = new Busboy({headers: req.headers});
var xlsxFileBuffers = [];
var zipFilePath = `${Math.random().toString(36).substring(5)}zipFile.zip`;
busboy.on('file', (fieldName, file, filename, encoding, mimeType) => {
if (!mimeType.includes('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') &&
!mimeType.includes('application/vnd.ms-excel') &&
!mimeType.includes('application/zip')
) return next('Invalid file type.');
if (fieldName === 'zipFile') {
file.pipe(fs.createWriteStream(zipFilePath));
}
else {
file.on('data', function(data) {
xlsxFileBuffers.push(data);
});
file.on('end', function() {
if (!xlsxFileBuffers.length) {
return next('Cannot read xlsx file.');
}
});
}
});
busboy.on('finish',() => {
console.log('busboy finish called');
if (xlsxFileBuffers.length > 0) {
console.log('we made it!');
}
});
req.pipe(busboy);
Maintenant vient ici la partie curieuse: il fonctionne à 100% lors de l'exécution au niveau local, mais quand il est en cours d'exécution sur un serveur distant, il répond par net::ERR_CONNECTION_RESET
. L'objet error imprime, mais il imprime ce qui ressemble à l'objet busboy, sans aucune information utile que j'ai trouvé pour savoir pourquoi la connexion a été fermée.
C'est un peu partielle de l'objet: {upload: f, progress: 81, name: "test-xlsx.xlsx", lastModified: 1507565920197, lastModifiedDate: Mon Oct 09 2017 09:18:40 GMT-0700 (PDT)}
Alors que nous pouvons le voir fait quelques progrès. Et sur le serveur il existe le fichier .zip
, mais il n'est pas complet, car une opération de décompression sur il échoue. Faites-moi savoir si d'autres informations pourraient vous aider! Merci! Edit: Le fichier .zip est 197KB et le fichier .xlsx est 7KB, lors de tests locaux, il a travaillé avec des fichiers zip au moins aussi grand que 120MB.