Dropping fs-extra as it's no longer needed. Dropping google eslint rules and simply using eslint:recommended. Upgrading packages. Moved manual tests folder into root level and renamed it to example folder. Various lint cleanups. Added a new option for creating parent path directory

dev
Richard Girges 6 years ago
parent 9314d38d99
commit 22b3d7e092
  1. 7
      .eslintrc
  2. 4
      .gitignore
  3. 0
      example/index.html
  4. 6
      example/server.js
  5. 0
      example/uploads/placeholder.txt
  6. 18
      lib/index.js
  7. 8
      package.json
  8. 16
      test/multipartUploads.spec.js
  9. 2
      test/options.spec.js
  10. 1001
      yarn.lock

@ -1,8 +1,11 @@
{
"extends": "google",
"extends": [
"eslint:recommended"
],
"env": {
"node": true,
"mocha": true
"mocha": true,
"es6": true
},
"parserOptions": {
"ecmaVersion": 6

4
.gitignore vendored

@ -14,5 +14,5 @@ node_modules
coverage
test/uploads
test/manual/uploads/*
!test/manual/uploads/placeholder.txt
example/uploads/*
!example/uploads/placeholder.txt

@ -1,5 +1,5 @@
const express = require('express');
const fileUpload = require('../../lib/index.js');
const fileUpload = require('../lib/index.js');
const app = express();
app.use('/form', express.static(__dirname + '/index.html'));
@ -20,7 +20,7 @@ app.post('/upload', function(req, res) {
return;
}
console.log('req.files >>>', req.files);
console.log('req.files >>>', req.files); // eslint-disable-line
sampleFile = req.files.sampleFile;
@ -36,5 +36,5 @@ app.post('/upload', function(req, res) {
});
app.listen(8000, function() {
console.log('Express server listening on port 8000');
console.log('Express server listening on port 8000'); // eslint-disable-line
});

@ -1,7 +1,8 @@
'use strict';
const Busboy = require('busboy');
const fs = require('fs-extra');
const fs = require('fs');
const path = require('path');
const streamifier = require('streamifier');
const md5 = require('md5');
@ -53,7 +54,7 @@ function processMultipart(options, req, res, next) {
busboy = new Busboy(busboyOptions);
// Build multipart req.body fields
busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated, encoding, mime) {
busboy.on('field', function(fieldname, val) {
req.body = req.body || {};
let prev = req.body[fieldname];
@ -85,7 +86,7 @@ function processMultipart(options, req, res, next) {
buffers.push(data);
if (options.debug) {
return console.log('Uploading %s -> %s', fieldname, filename);
return console.log('Uploading %s -> %s', fieldname, filename); // eslint-disable-line
}
});
@ -144,7 +145,7 @@ function processMultipart(options, req, res, next) {
truncated: file.truncated,
mimetype: mime,
md5: md5(buf),
mv: function(path, callback) {
mv: function(filePath, callback) {
// Callback is passed in, use the callback API
if (callback) {
doMove(
@ -170,7 +171,14 @@ function processMultipart(options, req, res, next) {
* @param {Function} errorFunc
*/
function doMove(successFunc, errorFunc) {
const fstream = fs.createWriteStream(path);
if (options.createParentPath) {
const parentPath = path.dirname(filePath);
if (!fs.existsSync(parentPath)) {
fs.mkdirSync(parentPath);
}
}
const fstream = fs.createWriteStream(filePath);
streamifier.createReadStream(buf).pipe(fstream);

@ -11,7 +11,6 @@
},
"dependencies": {
"busboy": "^0.2.14",
"fs-extra": "^4.0.1",
"md5": "^2.2.1",
"streamifier": "^0.1.1"
},
@ -31,11 +30,10 @@
"license": "MIT",
"repository": "richardgirges/express-fileupload",
"devDependencies": {
"body-parser": "^1.17.2",
"coveralls": "^2.13.1",
"body-parser": "^1.18.3",
"coveralls": "^3.0.1",
"eslint": "^4.5.0",
"eslint-config-google": "^0.9.1",
"express": "^4.15.4",
"express": "^4.16.3",
"istanbul": "^0.4.5",
"mocha": "^3.5.0",
"supertest": "^3.0.0"

@ -45,7 +45,7 @@ describe('Test Single File Upload', function() {
.post('/upload/single')
.attach('testFile', filePath)
.expect(200)
.end(function(err, res) {
.end(function(err) {
if (err) {
return done(err);
}
@ -64,7 +64,7 @@ describe('Test Single File Upload', function() {
.post('/upload/single')
.attach('testFile', filePath)
.expect(200)
.end(function(err, res) {
.end(function(err) {
if (err) {
return done(err);
}
@ -116,7 +116,7 @@ describe('Test Single File Upload w/ .mv() Promise', function() {
.post('/upload/single/promise')
.attach('testFile', filePath)
.expect(200)
.end(function(err, res) {
.end(function(err) {
if (err) {
return done(err);
}
@ -135,7 +135,7 @@ describe('Test Single File Upload w/ .mv() Promise', function() {
.post('/upload/single/promise')
.attach('testFile', filePath)
.expect(200)
.end(function(err, res) {
.end(function(err) {
if (err) {
return done(err);
}
@ -187,7 +187,7 @@ describe('Test Multi-File Upload', function() {
.attach('testFile2', upload2)
.attach('testFile3', upload3)
.expect(200)
.end(function(err, res) {
.end(function(err) {
if (err) {
return done(err);
}
@ -221,7 +221,7 @@ describe('Test File Array Upload', function() {
req
.expect(200)
.end(function(err, res) {
.end(function(err) {
if (err) {
return done(err);
}
@ -256,7 +256,7 @@ describe('Test Upload With Fields', function() {
lastName: mockUser.lastName,
email: mockUser.email
},
function(err, res) {
function(err) {
if (err) {
return done(err);
}
@ -282,7 +282,7 @@ describe('Test Upload With Fields', function() {
lastName: mockUser.lastName,
email: mockUser.email
},
function(err, res) {
function(err) {
if (err) {
return done(err);
}

@ -68,7 +68,7 @@ describe('File Upload Options Tests', function() {
it('Accepts a regex for stripping (decidedly) "invalid" characters from filename.',
function(done) {
const fileUploadOptions = {safeFileNames: /[\$#]/g};
const fileUploadOptions = {safeFileNames: /[$#]/g};
const actualFileName = 'my$Invalid#fileName.png123';
const expectedFileName = 'myInvalidfileName.png123';

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save