上傳
使用koa-multer(也可以利用其他方式,如:koa-body , koa-bodyparser)
const multer = require('koa-multer');//加載koa-multer模塊 // 上傳 圖片 var storage = multer.diskStorage({ //文件保存路徑 destination: function(req, file, cb) { cb(null, 'public/uploads/') }, //修改文件名稱 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('/upload', upload.single('file'), async(ctx, next) => { ctx.body = { filename: ctx.req.file.filename //返回文件名 } })
返回給客戶端,
返回一個base64格式
const fs = require('fs'); const path = require('path'); const mime = require('mime-types'); //需npm安裝
router.post('/upload', upload.single('file'), async(ctx, next) => {
let filePath = path.join(__dirname, '../', ctx.req.file.path); //圖片地址
file = fs.readFileSync(filePath); //讀取文件
let mimeType = mime.lookup(filePath); //讀取圖片文件類型
ctx.set('content-type', mimeType); //設置返回類型
ctx.body = file; //返回圖片
// ctx.body = {
// filename: ctx.req.file//返回文件名
// }
})
__dirname默認是當前文件夾的根目錄,所以要加第二個參數'../'
返回url鏈接
安裝koa-static
npm i koa-static
導入
const Koa = require('koa'); // 導入koa包 const serve = require('koa-static'); // 導入koa-static包 const path=require('path'); // 導入path包 用於拼接路徑 const app = new Koa(); // 創建koa實例對象
使用
app.use(serve(path.join(__dirname+'/static'), // 開放的文件夾 __dirname為當前運行文件的目錄 目前看來 只能開放文件夾 無法開放單獨一個文件 { index:false, // 默認為true 訪問的文件為index.html 可以修改為別的文件名或者false hidden:false, // 是否同意傳輸隱藏文件 defer:true, // 如果為true,則在返回next()之后進行服務,從而允許后續中間件先進行響應 } )) app.listen(4200);