add upload example
This commit is contained in:
parent
81d027eca7
commit
4b5c3e9920
4 changed files with 90 additions and 1 deletions
51
examples/upload/index.js
Normal file
51
examples/upload/index.js
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var logger = require('koa-logger');
|
||||||
|
var serve = require('koa-static');
|
||||||
|
var parse = require('co-busboy');
|
||||||
|
var koa = require('../..');
|
||||||
|
var fs = require('fs');
|
||||||
|
var app = koa();
|
||||||
|
|
||||||
|
// log requests
|
||||||
|
|
||||||
|
app.use(logger());
|
||||||
|
|
||||||
|
// custom 404
|
||||||
|
|
||||||
|
app.use(function *(next){
|
||||||
|
yield next;
|
||||||
|
if (this.body || !this.idempotent) return;
|
||||||
|
this.redirect('/404.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// serve files from ./public
|
||||||
|
|
||||||
|
app.use(serve(__dirname + '/public'));
|
||||||
|
|
||||||
|
// handle uploads
|
||||||
|
|
||||||
|
app.use(function *(next){
|
||||||
|
// ignore non-POSTs
|
||||||
|
if ('POST' != this.method) return yield next;
|
||||||
|
|
||||||
|
// multipart upload
|
||||||
|
var parser = parse(this);
|
||||||
|
var part;
|
||||||
|
|
||||||
|
while (part = yield parser.part()) {
|
||||||
|
var stream = fs.createWriteStream('/tmp/' + Math.random());
|
||||||
|
part.pipe(stream);
|
||||||
|
console.log('uploading %s -> %s', part.filename, stream.path);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.redirect('/');
|
||||||
|
});
|
||||||
|
|
||||||
|
// listen
|
||||||
|
|
||||||
|
app.listen(3000);
|
||||||
|
console.log('listening on port 3000');
|
15
examples/upload/public/404.html
Normal file
15
examples/upload/public/404.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Not Found</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
padding: 50px;
|
||||||
|
font: 14px Helvetica, Arial;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Sorry! Can't find that.</h1>
|
||||||
|
<p>The page you requested cannot be found.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
20
examples/upload/public/index.html
Normal file
20
examples/upload/public/index.html
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Upload</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
padding: 50px;
|
||||||
|
font: 14px Helvetica, Arial;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>File Upload</h1>
|
||||||
|
<p>Try uploading multiple files at a time.</p>
|
||||||
|
<form action="/" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="file" name="file" multiple>
|
||||||
|
<input type="submit" value="Upload">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -37,7 +37,10 @@
|
||||||
"supertest": "~0.8.1",
|
"supertest": "~0.8.1",
|
||||||
"co-fs": "~1.1",
|
"co-fs": "~1.1",
|
||||||
"co-views": "~0.1.0",
|
"co-views": "~0.1.0",
|
||||||
"ejs": "~0.8.4"
|
"ejs": "~0.8.4",
|
||||||
|
"koa-logger": "~1.0.1",
|
||||||
|
"koa-static": "~1.2.0",
|
||||||
|
"co-busboy": "git://github.com/cojs/busboy"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "> 0.11.4"
|
"node": "> 0.11.4"
|
||||||
|
|
Loading…
Reference in a new issue