国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

這篇具有很好參考價(jià)值的文章主要介紹了Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

? ? ? ? 前段時(shí)間用Node.js: express + MySQL + Vue + element組件做了一個(gè)小項(xiàng)目,記錄一下圖片上傳的實(shí)現(xiàn)。

? ? ? ? 將圖片存入數(shù)據(jù)庫(kù)有兩種方法:

? ? ? ? ? ? ? ? 1,將圖片以二進(jìn)制流的方式存入數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)搬家容易,比較安全,但數(shù)據(jù)庫(kù)空間的消耗大,訪問會(huì)比較緩慢)

? ? ? ? ? ? ? ? 2,將圖片的存放地址存入數(shù)據(jù)庫(kù)

? ? ? ? 主要介紹第二種。

一,將圖片以二進(jìn)制流的方式存入數(shù)據(jù)庫(kù)

? ? ? ? 將圖片轉(zhuǎn)成base64格式,數(shù)據(jù)類型使用MEDIUMTEXT類型。

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

? ? ? ? ?或者將圖片轉(zhuǎn)為保存到數(shù)據(jù)庫(kù)的Blob類型中。

二,將圖片的存放地址存入數(shù)據(jù)庫(kù)中。

1,編寫接口url

? ? ? ? 會(huì)運(yùn)用到一個(gè)中間件,Multer,用于處理?multipart/form-data?類型的表單數(shù)據(jù),它主要用于上傳文件 :multer/README-zh-cn.md at master · expressjs/multer · GitHub

? ? ? ? Multer會(huì)添加一個(gè)body對(duì)象以及file或files對(duì)象到request對(duì)象中,body對(duì)象包含表單的文本域信息,file對(duì)象包含對(duì)象表單上傳的文件信息。

(router和router_handle兩個(gè)文件夾的意思是,將路徑和執(zhí)行方法分開,方便管理,具體內(nèi)容可以查看??Node.js: express + MySQL的使用_express mysql_掉頭發(fā)類型的選手的博客-CSDN博客)

router下的文件

//引入multer
const multer = require('multer')
//磁盤存儲(chǔ)引擎,可以控制文件的存儲(chǔ),省略的話這些文件會(huì)保存在內(nèi)存中,不會(huì)寫入磁盤
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        //控制文件的存儲(chǔ)路徑
        cb(null, 'image/avatar')
    },
    filename: function (req, file, cb) {
        //定義上傳文件存儲(chǔ)時(shí)的文件名
        cb(null, file.originalname)
    }
})
const upload = multer({ storage: storage })
//接受單文件上傳
router.post('/update/avatar', upload.single('avatar'), userInfo_handler.updateAvatar)

? ? ? ? 首先引入multer,配置圖片的存儲(chǔ)地址和文件名,省略的話上傳的文件會(huì)保存在內(nèi)存中,不會(huì)寫入磁盤,在上傳前要在項(xiàng)目的根目錄下創(chuàng)建一個(gè)文件夾用于接收上傳的文件,比如,我的代碼中定義文件的存儲(chǔ)路徑為? cb(null, 'image/avatar')? ,要在目錄下創(chuàng)建一個(gè)image文件夾,再在image文件夾下創(chuàng)建一個(gè)avatar文件夾。

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

? ? ? ? 定義文件存儲(chǔ)時(shí)的文件名一般會(huì)使用時(shí)間戳作為文件名,防止上傳的文件重復(fù)(我這兒沒有使用時(shí)間戳)。?

????????upload.single('avatar') 表示接受單文件上傳,avatar代表上傳文件時(shí)的參數(shù)字段。多文件上傳使用?.array(fieldname[, maxCount]) ,maxCount來(lái)限制最大的上傳數(shù)量。

router_handler文件下的處理函數(shù)

exports.updateAvatar = (req, res) => {
    // 定義更新頭像的sql
    const sql = 'update users set avatar=? where id=?;'
    // console.log(req);
    // console.log(req.body.id)
    // console.log(req.file);
    // console.log(req.file.destination);
    const avatarUrl = `http://127.0.0.1:3007/${req.file.destination.split('/')[1]}/${req.file.originalname}`
    // console.log(avatarUrl);
    // 執(zhí)行sql語(yǔ)句
    db.query(sql, [avatarUrl, req.body.id], (err, results) => {
        // sql語(yǔ)句執(zhí)行錯(cuò)誤
        if(err) return res.cc(err)
        // sql語(yǔ)句執(zhí)行成功,但影響的條數(shù)部位1屬于執(zhí)行失敗
        if(results.affectedRows !== 1) return res.cc('更換頭像失??!')
        // 更換頭像成功
        res.cc('更換頭像成功!', 0)
    })
}

傳回的request

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

?Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

????????這時(shí)使用 req.file取到上傳的圖片信息,req.body取到其他上傳的數(shù)據(jù)。

? ? ? ? 然后處理圖片路徑,圖片路徑根據(jù)自己項(xiàng)目的實(shí)際情況進(jìn)行處理。最后執(zhí)行sql語(yǔ)句,存入數(shù)據(jù)庫(kù)。

? ? ? ? 接口處理完畢。

? ? ? ? 要想在瀏覽器中通過路徑訪問圖片還需要在? app.js 這個(gè)文件中加入

app.use(express.static('image'))

? ? ? ? 將整個(gè)image文件夾轉(zhuǎn)為靜態(tài)文件。

2,編寫前端代碼

? ? ? ? 前端代碼用element組件舉個(gè)例子。使用element中上傳的組件。其中有幾個(gè)屬性是比較重要的。

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

? ? ? ? ?action 是請(qǐng)求的URL,如果你寫的接口需要上送token,需要配置headers,data是請(qǐng)求中除了圖片文件其他的額外參數(shù),name是上傳圖片文件的字段,這個(gè)字段必須和定義url時(shí)的那個(gè)字段保持一致,就是下面這個(gè)字段。

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

?????????之后再重新請(qǐng)求數(shù)據(jù)庫(kù)中的數(shù)據(jù),將圖片顯示在頁(yè)面上。

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

上傳之后

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

圖片的保存位置

?Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

數(shù)據(jù)庫(kù)中?

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

?這個(gè)路徑可以直接在瀏覽器中訪問

Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳

??

????????可以到下面鏈接獲取文章中的代碼。

????????鏈接: https://pan.baidu.com/s/1t7bX0Nv3kggyf7IFzEffcA 提取碼: 0000文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-471374.html

到了這里,關(guān)于Node.js: express + MySQL + Vue實(shí)現(xiàn)圖片上傳的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一步步帶你實(shí)現(xiàn)一個(gè)簡(jiǎn)單的express服務(wù)器,能讓vue通過axios請(qǐng)求將圖片上傳到阿里云OSS

    一步步帶你實(shí)現(xiàn)一個(gè)簡(jiǎn)單的express服務(wù)器,能讓vue通過axios請(qǐng)求將圖片上傳到阿里云OSS

    上篇文章提到了如何用mock.js來(lái)模擬接口,方便在后端沒有寫好接口的時(shí)候也能順利開發(fā),本來(lái)計(jì)劃這篇文章是講一下用輪播圖組件swiper來(lái)展示一下模擬接收到的數(shù)據(jù)和圖片,但項(xiàng)目計(jì)劃發(fā)生了變化,這個(gè)就推到后面再說。 mock模擬接口雖然很好用,但是在項(xiàng)目開發(fā)的時(shí)候還是

    2024年02月04日
    瀏覽(27)
  • node筆記_express結(jié)合formidable實(shí)現(xiàn)前后端的文件上傳

    大家好,我是yma16,本期分享node

    2024年02月05日
    瀏覽(14)
  • node.js下載安裝和報(bào)錯(cuò)大全(express、淘寶鏡像、webpack、Vue)

    node.js下載安裝和報(bào)錯(cuò)大全(express、淘寶鏡像、webpack、Vue)

    目錄 一、概述 二、操作步驟 (一)下載node.js (二) 安裝node.js (三)查看環(huán)境變量 (四)查看版本信息 (五)新建全局下載包和緩存包位置 (六)配置環(huán)境變量 (七)安裝express(內(nèi)嵌http模塊) 安裝成功 安裝失敗 解決辦法一(最好的辦法) ?解決辦法二(其次) (八

    2024年02月01日
    瀏覽(50)
  • 前端Vue Node.js + Express + MongoDB 構(gòu)建的后端服務(wù)API接口

    構(gòu)建一個(gè)使用 Vue.js 作為前端, Node.js + Express + MongoDB 作為后端服務(wù)的全棧應(yīng)用涉及到多個(gè)步驟。這里簡(jiǎn)要概述整個(gè)過程,并提供一些基本的代碼示例來(lái)幫助你開始。 安裝 MongoDB: 根據(jù)你的操作系統(tǒng)從 MongoDB 官網(wǎng) 下載并安裝 MongoDB。 啟動(dòng) MongoDB 服務(wù): 安裝完成后,根據(jù) MongoDB 的

    2024年04月14日
    瀏覽(42)
  • node+vue3+mysql前后分離開發(fā)范式——實(shí)現(xiàn)視頻文件上傳并渲染

    node+vue3+mysql前后分離開發(fā)范式——實(shí)現(xiàn)視頻文件上傳并渲染

    大家好,我是yma16,本文分享關(guān)于 node+vue3+mysql前后分離開發(fā)范式——實(shí)現(xiàn)視頻文件上傳并渲染。 技術(shù)選型 前端:vite+vue3+antd 后端:node koa 數(shù)據(jù)庫(kù):mysql koa是一個(gè)現(xiàn)代的Node.js框架,可以用來(lái)構(gòu)建Web應(yīng)用程序。 Node.js的mime庫(kù) Node.js的mime庫(kù)是用于根據(jù)文件擴(kuò)展名獲取對(duì)應(yīng)的MIME類型

    2024年02月19日
    瀏覽(34)
  • node.js的下載安裝詳細(xì)步驟(還有安裝配套的express、淘寶鏡像、webpack、Vue)

    node.js的下載安裝詳細(xì)步驟(還有安裝配套的express、淘寶鏡像、webpack、Vue)

    目錄 一、概述 二、操作步驟 (一)下載node.js (二) 安裝node.js (三)查看環(huán)境變量 (四)查看版本信息 (五)新建全局下載包和緩存包位置 (六)配置環(huán)境變量 (七)安裝express(內(nèi)嵌http模塊) 安裝成功 安裝失敗 解決辦法一(最好的辦法) ?解決辦法二(其次) (八

    2024年02月09日
    瀏覽(23)
  • 直接在html中引入Vue.js的cdn來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的上傳圖片組件

    直接在html中引入Vue.js的cdn來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的上傳圖片組件

    當(dāng)使用 Vue.js 的 CDN 來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的上傳圖片組件時(shí),你可以利用 Vue 的數(shù)據(jù)綁定和事件處理能力,結(jié)合 HTML 和 CSS,輕松地創(chuàng)建一個(gè)交互式的圖片上傳界面。以下是一個(gè)示例: index.html TANKING https://afdian.net/item/ffa3292a337c11ee9a8c5254001e7c00

    2024年02月13日
    瀏覽(23)
  • Node + Express 后臺(tái)開發(fā) —— 上傳、下載和發(fā)布

    Node + Express 后臺(tái)開發(fā) —— 上傳、下載和發(fā)布

    前面我們已經(jīng)完成了數(shù)據(jù)庫(kù)的 增刪改查 ,在弄一個(gè) 上傳 圖片、 下載 csv,一個(gè)最簡(jiǎn)單的后臺(tái)開發(fā)就已完成,最后 部署 即可。 需求 需求 :做一個(gè) 個(gè)人簡(jiǎn)介 的表單提交,有 昵稱 、 簡(jiǎn)介 和 頭像 。后端能接收數(shù)據(jù)并保存到數(shù)據(jù)庫(kù)。 接收不到數(shù)據(jù) 用 amis-editor (amis 低代碼編

    2024年02月03日
    瀏覽(26)
  • 【node進(jìn)階】Express+Multer+Postman模擬文件上傳功能

    【node進(jìn)階】Express+Multer+Postman模擬文件上傳功能

    ? 作者簡(jiǎn)介:一名普通本科大三的學(xué)生,致力于提高前端開發(fā)能力 ? 個(gè)人主頁(yè):前端小白在前進(jìn)的主頁(yè) ?? 系列專欄 : node.js學(xué)習(xí)專欄 ?? 個(gè)人社區(qū) : 個(gè)人交流社區(qū) ?? 學(xué)習(xí)格言: ?? 打不倒你的會(huì)使你更強(qiáng)!?? ?? 刷題網(wǎng)站:這段時(shí)間有許多的小伙伴在問有沒有什么

    2024年02月02日
    瀏覽(28)
  • node.js中Express簡(jiǎn)介

    node.js中Express簡(jiǎn)介

    1.什么是Express 官方給出的概念:Express是基于Node.js平臺(tái),快速、開放、極簡(jiǎn)的web開發(fā)框架。 通俗理解:Express的作用和Node.js內(nèi)置的http模塊類似,是 專門用來(lái)創(chuàng)建web服務(wù)器的 Express的本質(zhì):就是一個(gè)npm上的第三方包,提供了快速創(chuàng)建Web服務(wù)器的便捷方法 2.進(jìn)一步理解Express htt

    2024年02月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包