koa2中的文件上傳與讀取


上傳

使用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);

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM