vue實(shí)現(xiàn)的上傳圖片到數(shù)據(jù)庫(kù)并顯示到頁(yè)面功能示例
本文實(shí)例講述了vue實(shí)現(xiàn)的上傳圖片到數(shù)據(jù)庫(kù)并顯示到頁(yè)面功能。分享給大家供大家參考,具體如下:
1、點(diǎn)擊上傳圖片,彈出選擇圖片選項(xiàng)框。
頁(yè)面代碼:
<div class="form-signin-heading" id="btnUpload" @change="upload">上傳圖片</div> <input type="file" name="avatar" id="avatar" multiple="multiple" @change="upload"> <img :src="'http://localhost:8888'+item.photos_url" alt=""/>
由于我們要設(shè)置上傳圖片的樣式,所以把input隱藏,并要做如下操作把input的點(diǎn)擊事件給div框:
mounted: function () {
var upload = document.getElementById("btnUpload");
var avatar = document.getElementById("avatar");
upload.onclick =function(){
avatar.click(); //注意IE的兼容性
};
}
2、在api接口的controller層加入兩個(gè)文件,命名自己定,如:
upFile.js
let multer=require('multer');
let storage = multer.diskStorage({
//設(shè)置上傳后文件路徑,uploads文件夾會(huì)自動(dòng)創(chuàng)建。
destination: function (req, file, cb) {
cb(null, './public/uploads')
},
//給上傳文件重命名,獲取添加后綴名
filename: function (req, file, cb) {
let fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
}
});
//添加配置文件到multer對(duì)象。
let upload = multer({
storage: storage
});
module.exports = upload;
upFileController.js
var muilter = require('./upFile.js');
//multer有single()中的名稱必須是表單上傳字段的name名稱。
var upload=muilter.single('file');
function dataInput(req, res) {
upload(req, res, function (err) {
//添加錯(cuò)誤處理
if (err) {
return console.log(err);
}
//文件信息在req.file或者req.files中顯示。
let photoPath = req.file.path;
photoPath = photoPath.replace(/public/,"");//將文件路徑中的public\去掉,否則會(huì)和靜態(tài)資源配置沖突
//將photoPath存入數(shù)據(jù)庫(kù)即可
console.log(photoPath);
res.send(photoPath);
});
}
module.exports = {
dataInput
};
3、在頁(yè)面中將圖片的地址存到數(shù)據(jù)庫(kù)
upload: function (e) {
var that = this;
let formData = new window.FormData();
let file = e.target.files[0];
formData.append('file',file);//通過append向form對(duì)象添加數(shù)據(jù)
//利用split切割,拿到上傳文件的格式
var src = file.name,
formart = src.split(".")[1];
//使用if判斷上傳文件格式是否符合
if (formart == "jpg" || formart == "png" ||
formart == "docx" || formart == "txt" ||
formart == "ppt" || formart == "xlsx" ||
formart == "zip" || formart == "rar" ||
formart == "doc") {
//只有滿足以上格式時(shí),才會(huì)觸發(fā)ajax請(qǐng)求
this.$axios.post(this.$api.personalCenter.upFile,formData).then(function (res) {
that.upFileData = res.data;
}).then(function (res) {
var params = {
photos_url: that.upFileData,
photo_des: ''
};
// console.log(params.photos_url,'photos_url')
that.$axios.post(that.$api.personalCenter.wallAdd,qs.stringify(params)).then(function (res) {
console.log(res.data);
that.$options.methods.imgList.bind(that)();
}).catch(function (err) {
console.log(err);
console.log("請(qǐng)求出錯(cuò)");
})
})
} else {
alert("文件格式不支持上傳");
}
}
希望本文所述對(duì)大家vue.js程序設(shè)計(jì)有所幫助。
相關(guān)文章
vue3+elementPlus實(shí)現(xiàn)年份選擇器
這篇文章主要為大家詳細(xì)介紹了vue3如何通過elementPlus實(shí)現(xiàn)一個(gè)簡(jiǎn)單的年份選擇器,文中的示例代碼講解詳細(xì),需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
使用vite創(chuàng)建vue3之vite.config.js的配置方式
這篇文章主要介紹了使用vite創(chuàng)建vue3之vite.config.js的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Vue2.0用 watch 觀察 prop 變化(不觸發(fā))
本篇文章主要介紹了Vue2.0用 watch 觀察 prop 變化(不觸發(fā)),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
vue中實(shí)現(xiàn)代碼高亮與語(yǔ)法著色的方法介紹
在Vue的開發(fā)過程中,我們經(jīng)常需要展示代碼片段或者進(jìn)行代碼高亮與語(yǔ)法著色,Vue提供了多種方式來(lái)實(shí)現(xiàn)代碼高亮與語(yǔ)法著色,本文將為你詳細(xì)介紹這些方法,需要的朋友可以參考下2023-06-06
element-ui 限制日期選擇的方法(datepicker)
本篇文章主要介紹了element-ui 限制日期選擇的方法(datepicker),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-05-05
vue給對(duì)象添加屬性沒有響應(yīng)式的問題及解決
這篇文章主要介紹了vue給對(duì)象添加屬性沒有響應(yīng)式的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue實(shí)現(xiàn)移動(dòng)端div拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端div拖動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

