diff --git a/.gitignore b/.gitignore index 5dc8a45..e10a776 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ npm-debug.log /components/**/*.js.map /logs + +!/demo/components/file-upload/file-catcher.js diff --git a/demo/components/file-upload-section.ts b/demo/components/file-upload-section.ts index 05936ab..7ccdcfd 100644 --- a/demo/components/file-upload-section.ts +++ b/demo/components/file-upload-section.ts @@ -12,7 +12,8 @@ let tabDesc:Array = [ { heading: 'Simple', ts: require('!!prismjs?lang=typescript!./file-upload/simple-demo.ts'), - html: require('!!prismjs?lang=markup!./file-upload/simple-demo.html') + html: require('!!prismjs?lang=markup!./file-upload/simple-demo.html'), + js: require('!!prismjs?lang=javascript!./file-upload/file-catcher.js') } ]; @@ -38,6 +39,11 @@ tabDesc.forEach(desc => {
${desc.ts}
+ +
+
${desc.js}
+
+
diff --git a/demo/components/file-upload/file-catcher.js b/demo/components/file-upload/file-catcher.js new file mode 100644 index 0000000..1063caf --- /dev/null +++ b/demo/components/file-upload/file-catcher.js @@ -0,0 +1,35 @@ +var express = require('express'); +var Busboy = require('busboy'); +var path = require('path'); +var fs = require('fs'); + +var app = express(); + +app.use(function (req, res, next) { + res.setHeader('Access-Control-Allow-Origin', '!put your host here!'); + res.setHeader('Access-Control-Allow-Methods', 'POST'); + res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); + res.setHeader('Access-Control-Allow-Credentials', true); + next(); +}); + +app.post('/api', function (req, res) { + var fstream; + var files = []; + var busboy = new Busboy({headers: req.headers}); + busboy.on('file', function (fieldname, file, filename) { + fstream = fs.createWriteStream(__dirname + '/uploads/' + filename); + file.pipe(fstream); + fstream.on('close', function () { + files.push(filename); + file.resume(); + }); + }); + + busboy.on('finish', function () { + res.end('ok'); + }); + req.pipe(busboy); +}); + +app.listen(process.env.PORT || 3000);