摘要:我相信很多使用的朋友,都有采用上傳圖片的需求,因?yàn)榍昂蠖朔蛛x后,我們希望都能用來(lái)解決數(shù)據(jù)問題,傳統(tǒng)的表單提交會(huì)導(dǎo)致提交成功后頁(yè)面跳轉(zhuǎn),而使用能夠無(wú)刷新上傳圖片等文件。
我相信很多使用vuejs的朋友,都有采用ajax上傳圖片的需求,因?yàn)榍昂蠖朔蛛x后,我們希望都能用ajax來(lái)解決數(shù)據(jù)問題,傳統(tǒng)的表單提交會(huì)導(dǎo)致提交成功后頁(yè)面跳轉(zhuǎn),而使用ajax能夠無(wú)刷新上傳圖片等文件。
其實(shí)已經(jīng)有朋友封裝了相關(guān)的npm包,但是我想說(shuō)用原生的js api來(lái)實(shí)現(xiàn),也用不了多少代碼,而且更靈活,能使用原生就盡量用原生。接下來(lái)就以一個(gè)簡(jiǎn)單的頭像上傳來(lái)說(shuō)明如何使用。
更改
解釋一下上面代碼的意思,當(dāng)我們點(diǎn)擊圖片會(huì)觸發(fā)setAvatar函數(shù),該函數(shù)會(huì)觸發(fā)input的click事件,于是就會(huì)彈出文件選擇框,當(dāng)我們選擇了一張圖片后,觸發(fā)chageImage函數(shù),這個(gè)函數(shù)的功能就是預(yù)覽你上傳的圖片,單后當(dāng)我們點(diǎn)擊修改按鈕后,就會(huì)把資源傳到后端
后端處理后端接收到你上傳的資源,肯定要把資源保存到服務(wù)器,我就以Nodejs來(lái)說(shuō)明,我使用formidable解析上傳的數(shù)據(jù)
exports.avatar = function(req, res, next) { let form = new formidable.IncomingForm() form.parse(req, function(err, fields, files) { if (err) { return res.json({ "code": 500, "message": "內(nèi)部服務(wù)器錯(cuò)誤" }) } // 獲取后綴名 let extname = path.extname(files.avatar.name) let oldpath = files.avatar.path; let newpath = "./public/avatar" + extname; let avatarName = "avatar" + extname; // 更改名字和路徑 fs.rename(oldpath, newpath, function(err) { if (err) { return res.json({ "code": 401, "message": "圖片上傳失敗" }) } }) // 更新數(shù)據(jù)庫(kù) db.updateMany("users", { "user": username }, { "avatar": avatarName }, function(err, result) { if (err) { return res.json({ "code": 401, "message": "頭像更新失敗" }) } return res.json({ "code":200, "message": "頭像上傳成功" }) }) }) }
后端解析ajax提交的數(shù)據(jù)和解析采用傳統(tǒng)表單提交的數(shù)據(jù)方法一樣,如果你是做前端開發(fā)的,不了解后端代碼影響不大。
說(shuō)這么多,還是來(lái)個(gè)demo吧,https://github.com/wmui/vueblog,這個(gè)小項(xiàng)目后臺(tái)有個(gè)頭像修改的功能,是使用ajax上傳圖片的,核心代碼百行不到,前后端分離。
在這里挺感謝sf和掘金的朋友的,開源此項(xiàng)目半月左右,收到200多個(gè)star,人生第一次這么輝煌。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/84708.html
摘要:簡(jiǎn)單的上傳例子先在里面準(zhǔn)便好標(biāo)簽添加上傳文件上傳文件解讀步驟的對(duì)象獲取,對(duì)象生成使用的事件來(lái)獲取,文件的內(nèi)容使用的方法來(lái)添加一個(gè)新值到里面來(lái)使用的的方法來(lái)上傳文件原理說(shuō)明對(duì)象其實(shí)不止是可以用來(lái)上傳文件,如同其名,可以模擬一系列表單控件的 showImg(https://segmentfault.com/img/bVbbKYh?w=1366&h=660); FormData 簡(jiǎn)單的上傳例...
摘要:默認(rèn)地,表單數(shù)據(jù)會(huì)編碼為。就是說(shuō),在發(fā)送到服務(wù)器之前,所有字符都會(huì)進(jìn)行編碼空格轉(zhuǎn)換為加號(hào),特殊符號(hào)轉(zhuǎn)換為值。提交說(shuō)明文件上傳。圖片選擇圖片地址上傳上傳。用表單直接構(gòu)造對(duì)象就不需要下面的方法來(lái)為表單進(jìn)行賦值了。 nodejs圖片上傳 nodejs一般開發(fā)網(wǎng)站基本都用express框架,本文也主要以express為例,講解如何上傳圖片;express本身沒有上傳圖片功能;一般都是集成相應(yīng)的...
摘要:有時(shí)候,我們不想通過上傳本地圖片的方式上傳圖片,而是通過相機(jī)拍照,將這個(gè)拍照后的圖片直接上傳到服務(wù)器上,不需要保存到本地。現(xiàn)在我們來(lái)通過的或者方法對(duì)象對(duì)象來(lái)通過上傳圖片。 有時(shí)候,我們不想通過上傳本地圖片的方式上傳圖片,而是通過相機(jī)拍照,將這個(gè)拍照后的圖片直接上傳到服務(wù)器上,不需要保存到本地。比如,用video模擬一個(gè)攝像頭,通過webrtc調(diào)用攝像頭的方式拍一張照,然后通過canva...
摘要:有時(shí)候,我們不想通過上傳本地圖片的方式上傳圖片,而是通過相機(jī)拍照,將這個(gè)拍照后的圖片直接上傳到服務(wù)器上,不需要保存到本地?,F(xiàn)在我們來(lái)通過的或者方法對(duì)象對(duì)象來(lái)通過上傳圖片。 有時(shí)候,我們不想通過上傳本地圖片的方式上傳圖片,而是通過相機(jī)拍照,將這個(gè)拍照后的圖片直接上傳到服務(wù)器上,不需要保存到本地。比如,用video模擬一個(gè)攝像頭,通過webrtc調(diào)用攝像頭的方式拍一張照,然后通過canva...
摘要:說(shuō)明使用獲取表單的數(shù)據(jù),不同通過和獲取值上傳圖片這三個(gè)參數(shù)必須配置該處使用了來(lái)獲取文件上傳的進(jìn)度本人沒實(shí)驗(yàn),待測(cè)圖片壓縮 圖片上傳的多種方式 一.使用Form表單,enctype=multipart/form-data 說(shuō)明:1.監(jiān)聽input上的change事件可以實(shí)現(xiàn)自動(dòng)上傳到服務(wù)器2.服務(wù)器端通過name字段,獲取上傳圖片的信息 3.數(shù)據(jù)信...
閱讀 1472·2023-04-26 00:08
閱讀 808·2021-11-23 18:51
閱讀 1681·2021-11-12 10:34
閱讀 1013·2021-10-14 09:43
閱讀 508·2021-08-18 10:23
閱讀 2585·2019-08-30 15:55
閱讀 3396·2019-08-30 11:05
閱讀 2798·2019-08-29 12:50