Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

61 rinda
1.9 KiB

  1. const config = require('./config');
  2. const debug = require('debug')('server-connect:setup:upload');
  3. const fs = require('fs-extra');
  4. const qs = require('qs');
  5. module.exports = function(app) {
  6. const fileupload = require('express-fileupload');
  7. const isEligibleRequest = require('express-fileupload/lib/isEligibleRequest');
  8. // Make sure tmp folder exists and make it empty
  9. fs.ensureDirSync(config.tmpFolder);
  10. fs.emptyDirSync(config.tmpFolder);
  11. // Always use tmp folder
  12. app.use(fileupload(Object.assign({}, config.fileupload, {
  13. useTempFiles: true,
  14. tempFileDir: config.tmpFolder
  15. })));
  16. app.use((req, res, next) => {
  17. if (!isEligibleRequest(req)) {
  18. return next();
  19. }
  20. let encoded = qs.stringify(req.body);
  21. if (req.files) {
  22. for (let field in req.files) {
  23. encoded += '&' + field + '=' + field;
  24. }
  25. }
  26. req.body = qs.parse(encoded, {
  27. arrayLimit: 1000
  28. });
  29. // Cleanup
  30. res.once('close', () => {
  31. if (req.files) {
  32. for (let field in req.files) {
  33. let file = req.files[field];
  34. if (Array.isArray(file)) {
  35. file.forEach((file) => {
  36. if (file.tempFilePath && fs.existsSync(file.tempFilePath)) {
  37. debug('delete %s', file.tempFilePath);
  38. fs.unlink(file.tempFilePath);
  39. }
  40. });
  41. } else if (file.tempFilePath && fs.existsSync(file.tempFilePath)) {
  42. debug('delete %s', file.tempFilePath);
  43. fs.unlink(file.tempFilePath);
  44. }
  45. }
  46. }
  47. });
  48. next();
  49. });
  50. debug('Upload middleware configured.');
  51. }