* npm install
npm install --save koa-body
* index.js
const koaBody = require('koa-body');
koa.use(koaBody({
multipart: true,
formidable: {
maxFileSize: 100 * 1024 * 1024 // 100M, default 2M
}
}));
* router.js
router.post('/upload', (new TestController()).upload);
* ./app/controllers/TestController.js
var Controller = require('./BaseController');
function TestController() {
Controller.call(this);
}
TestController.prototype = new Controller();
TestController.prototype.upload = async function(ctx, next) {
const fs = require('fs');
const path = require('path');
const file = ctx.request.files.file;
const reader = fs.createReadStream(file.path);
let filePath = path.join("/home/ubuntu/upload/", file.name);
const upStream = fs.createWriteStream(filePath);
reader.pipe(upStream);
ctx.body = {
code: 0,
data: filePath,
message: "OK"
}
};
module.exports = TestController;
test:
* index.html
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>test upload</title>
</head>
<body>
<form action="http://192.168.4.157:8030/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" value="" multiple="multiple" />
<input type="submit" value="上传"/>
</form>
<p id="j_result"></p>
<script type="text/javascript" src="http://47.93.27.106/lib/jquery.js"></script>
<script>
var form = document.getElementsByTagName("form")[0];
form.onsubmit = function(e) {
e.preventDefault();
var that = this;
$.ajax({
type: 'POST',
url: that.action,
data: new FormData(that),
// dataType: 'json',
cache: false,
processData: false,
contentType: false
}).done(function(data) {
console.log(data);
$("#j_result").html(JSON.stringify(data));
}).fail(function(jqXHR, textStatus, errorThrown) {
});
}
</script>
</body>
</html>
* run:
查看上传的文件
dir E:\home\ubuntu\upload
npm配置
npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/mirrors/node
CORS 跨域配置
npm install koa2-cors --save
* ./config/cors.js
const cors = require('koa2-cors');
module.exports = function() {
return cors({
// origin: function(ctx) {
// if (ctx.url === 'api') {
// return '*';
// }
// return 'http://192.168.4.157:8030';
// },
origin: '*',
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization', 'Token'],
maxAge: 5,
credentials: true,
allowMethods: ['GET', 'PUT', 'POST', 'DELETE', 'HEAD', 'OPTIONS'],
allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
})
};
* index.js
const Koa = require('koa');
const koa = new Koa();
koa.use(require('./config/cors')());
const router = require('./router')();
koa.use(router.routes()).use(router.allowedMethods());