最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于node編寫(xiě)文件上傳的接口的坑及解決

 更新時(shí)間:2022年06月06日 17:12:39   作者:小碼家  
這篇文章主要介紹了關(guān)于node編寫(xiě)文件上傳的接口的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

node編寫(xiě)文件上傳接口的坑

今天沒(méi)事在寫(xiě)node的接口時(shí)候用到文件上傳的接口給前端,不知道用中間件好一點(diǎn),然后就找度娘,網(wǎng)上都是koa-body中間件,但是那個(gè)自己測(cè)試?yán)鲜墙邮詹坏絺鬟^(guò)來(lái)的文件file的值,然后換另一種就是koa-multer 完美解決。

首先是在這里插入代碼片npm i koa-multer

在app.js引入,進(jìn)行路由

控制器代碼:

路由代碼

然后就完美解決

node(express)圖片上傳接口寫(xiě)法

作為一名接口調(diào)用師,今天我們來(lái)用node寫(xiě)一個(gè)圖片上傳的接口。。。

需要

node-express框架

const multer = require('multer');
const fs = require('fs')
const path = require('path')

需要的三個(gè)模塊,一個(gè)是文件上傳的接口一個(gè)是文件讀取的模塊,一個(gè)是路徑設(shè)置的模塊。

步驟和代碼

完整代碼

const multer = require('multer');
const fs = require('fs')
const path = require('path')
module.exports = (app) => {
? ? let upload = multer({ dest: 'uploads/' })
? ? app.post('/img', upload.single('test'), ?? ??? ??? ?function(req, res, next) {
? ? ? ? //讀取文件路徑(uploads/文件夾下面的新建的圖片地址)
? ? ? ? console.log(req.file);
? ? ? ? fs.readFile(req.file.path, (err, data) => {
? ? ? ? ? ? //如果讀取失敗
? ? ? ? ? ? if (err) { return res.send('上傳失敗') }
? ? ? ? ? ? //如果讀取成功
? ? ? ? ? ? //聲明圖片名字為時(shí)間戳和隨機(jī)數(shù)拼接成的,盡量確保唯一性
? ? ? ? ? ? let time = Date.now() + parseInt(Math.random() * 999) + parseInt(Math.random() * 2222);
? ? ? ? ? ? //拓展名
? ? ? ? ? ? let extname = req.file.mimetype.split('/')[1]
? ? ? ? ? ? ? ? //拼接成圖片名
? ? ? ? ? ? let keepname = time + '.' + extname
? ? ? ? ? ? ? ? //三個(gè)參數(shù)
? ? ? ? ? ? ? ? //1.圖片的絕對(duì)路徑
? ? ? ? ? ? ? ? //2.寫(xiě)入的內(nèi)容
? ? ? ? ? ? ? ? //3.回調(diào)函數(shù)
? ? ? ? ? ? fs.writeFile(path.join(__basename, '/public/img/' + keepname), data, (err) => {
? ? ? ? ? ? ? ? if (err) { return res.send('寫(xiě)入失敗') }
? ? ? ? ? ? ? ? res.send({ err: 0, msg: '上傳ok', data: '/public/img/' + keepname })
? ? ? ? ? ? });
? ? ? ? });
? ? });
}

代碼分解

fs.readFile(req.file.path, (err, data)=>{
? ? if(err){res.send('讀取失敗')}
})
//一個(gè)是讀取部分一個(gè)是寫(xiě)入部分,主要就這兩部分。
fs.writeFile(path.join(__basename, '/public/img/' + keepname), data, (err) => {
? ? ? ? ? ? ? ? if (err) { return res.send('寫(xiě)入失敗') }

如果有和我一樣在學(xué)習(xí)的入門(mén)小伙伴,希望你知道在自己的入口文件里面在中間件寫(xiě)完后使用這兩段代碼,懂得都懂

//head
let express =require('express')
let router =require('/your router path')
const app =express()
...
//main
router(app)
//other
? ? app.use((req, res) => {
? ? res.status(404).send('沒(méi)有找到資源')
})
app.listen(8080)

大概這個(gè)意思了。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

兴文县| 莱西市| 永宁县| 柯坪县| 台北县| 汪清县| 富蕴县| 尼玛县| 隆安县| 汶上县| 班玛县| 呼和浩特市| 灌云县| 师宗县| 威海市| 施甸县| 长治县| 新乡市| 民权县| 靖西县| 榕江县| 福海县| 河北区| 望江县| 潢川县| 贵南县| 榆林市| 二连浩特市| 唐河县| 山东省| 曲靖市| 文登市| 仪征市| 泽州县| 萨迦县| 金华市| 东兴市| 双牌县| 固安县| 巴塘县| 宁阳县|