I really like
jQuery-File-Upload plugin, but it missed integration with
Express.js. I ended up with adapting their node code as a middleware for Express.js. Example Express.js integration:
var express = require("express"),
upload = require('jquery-file-upload-middleware');
var app = express();
app.configure(function () {
...
app.use('/upload', upload({
uploadDir: __dirname + '/public/uploads',
uploadUrl: '/uploads/'
}));
app.use(express.bodyParser());
...
});
This way upload middleware will be tied to /upload path, in the frontend you use /upload as url to upload files:
<input id="fileupload" type="file" name="files[]" data-url="/upload" multiple>
<script>$('#fileupload').fileupload({ dataType: 'json' })</script>
Other options and their default values:
tmpDir: '/tmp',
maxPostSize: 11000000000, // 11 GB
minFileSize: 1,
maxFileSize: 10000000000, // 10 GB
acceptFileTypes: /.+/i,
// Files not matched by this regular expression force a download dialog,
// to prevent executing any scripts in the context of the service domain:
safeFileTypes: /.(gif|jpe?g|png)$/i,
imageTypes: /.(gif|jpe?g|png)$/i,
imageVersions: {
thumbnail: {
width: 80,
height: 80
}
},
accessControl: {
allowOrigin: '*',
allowMethods: 'OPTIONS, HEAD, GET, POST, PUT, DELETE'
}
IMPORTANT: jquery-file-upload-middleware should be registered before express.bodyParser(), or else upload progress events will not fire.
Get the
code