koa框架實現檔案上傳伺服器
阿新 • • 發佈:2019-01-27
koa有個好用的生成器koa-generator ,npm install -g koa-generator 安裝之
koa2 test_app生成專案,cd test_app進入目錄,npm install安裝依賴
1.routes下新增koaUploader.js,程式碼如下:
const multer = require('koa-multer');//載入koa-multer模組 const router = require('koa-router')(); var storage = multer.diskStorage({ //檔案儲存路徑 destination: function (req, file, cb) { cb(null, '../public/upload/') }, //修改檔名稱 filename: function (req, file, cb) { var fileFormat = (file.originalname).split("."); cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]); } }) //載入配置 var upload = multer({ storage: storage }); //路由 router.post('/multerUpload/upload', upload.single('file'), async (ctx, next) => { console.log("ctx.req.file.filename:"+ctx.req.file.filename) /*ctx.body = { filename: ctx.req.file.filename//返回檔名 } */ ctx.body = ctx.req.file.filename }) module.exports=router
需要安裝koa-multer依賴
2.app.中解決跨域問題
const cors = require('koa2-cors') app.use(cors({ origin: function (ctx) { if (ctx.url === '/test') { return "*"; // 允許來自所有域名請求 } //return 'http://localhost:8080'; // 這樣就能只允許 http://localhost:8080 這個域名的請求了 return "*" }, exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], maxAge: 5, credentials: true, allowMethods: ['GET', 'POST', 'DELETE'], allowHeaders: ['Content-Type', 'Authorization', 'Accept'], }))
引入koaUploader
const multerUploader = require('./routes/koaUploader')
app.use(multerUploader.routes(), multerUploader.allowedMethods())
bodyparser的大小限制問題
app.use(bodyparser({
enableTypes:['json', 'form', 'text'],
formLimit: '20mb'
}))
這樣就好了,前端上傳和另一篇express框架的一樣