Vue+Element+Springboot圖片上傳的實(shí)現(xiàn)示例
最近沒(méi)事剛好聯(lián)系下vue+springboot前段后分離的項(xiàng)目、用上了圖片上傳功能、記錄一下。
前端待提交的表單部分代碼
<el-form-item label="封面圖片">
<el-upload v-model="dataForm.title"
class="avatar-uploader"
:limit="1"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
multiple
:http-request="uploadFile"
:on-remove="handleRemove"
:on-change='changeUpload'
:file-list="images">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
el-upload里面的元素解釋?zhuān)?/p>
- on-preview:點(diǎn)擊文件列表中已上傳的文件時(shí)的事件
- on-remove:刪除文件時(shí)候調(diào)用的方法
- on-change:文件狀態(tài)改變時(shí)的事件,添加文件、上傳成功和上傳失敗時(shí)都會(huì)被調(diào)用
- file-list:上傳的文件列表或者默認(rèn)回顯的數(shù)據(jù)展示渲染
retrun和data
return {
images: [{name: 'food.jpg', url: 'https://img-blog.csdnimg.cn/20210329194832973.png'}],
imageUrl: '',
fileList: [], // 文件上傳數(shù)據(jù)(多文件合一)
dialogImageUrl: '',
dialogVisible: false,
options: [],
content: '',
editorOption: {},
visible: false,
dataForm: {
id: 0,
title: '',
content: '',
bz: ''
},
tempKey: -666666 // 臨時(shí)key, 用于解決tree半選中狀態(tài)項(xiàng)不能傳給后臺(tái)接口問(wèn)題. # 待優(yōu)化
}
預(yù)覽圖片和上傳圖片以及刪除圖片
changeUpload: function(file, fileList) {//預(yù)覽圖片
this.fileList = fileList;
},
uploadFile(file){
},
handleRemove(file, fileList) {
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
這里我是用fomrData對(duì)象進(jìn)行提交的、因?yàn)橹恍枰蟼饕粡垎螐埛饷鎴D片、還有添加其他的一些表單內(nèi)容進(jìn)去
// 表單提交
dataFormSubmit () {
const form = new FormData()// FormData 對(duì)象
form.append('file', this.fileList);
form.append('title', this.dataForm.title);
form.append('content', this.$refs.text.value);
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.$http({
url: this.$http.adornUrl(`/sys/inform/${!this.dataForm.id ? 'save' : 'update'}`),
method: 'post',
data: form
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
} else {
this.$message.error(data.msg)
}
})
}
})
}
后臺(tái)的話通過(guò)HttpServletRequest request--WebUtils
.getNativeRequest(request, MultipartHttpServletRequest.class)來(lái)獲取文件請(qǐng)求并解析文件到服務(wù)器或本地
/**
* @author lyy
* 保存 PC-后臺(tái)上傳文件
*/
@RequestMapping(value = "sys/file/save", method = {RequestMethod.POST, RequestMethod.GET})
@Transactional
public R save(HttpServletRequest request) {
String classify = request.getParameter("classify");
MultipartHttpServletRequest multipartRequest = WebUtils
.getNativeRequest(request, MultipartHttpServletRequest.class);
String fileName = "";
if (multipartRequest != null) {
Iterator<String> names = multipartRequest.getFileNames();
while (names.hasNext()) {
List<MultipartFile> files = multipartRequest.getFiles(names.next());
if (files != null && files.size() > 0) {
for (MultipartFile file : files) {
fileName = file.getOriginalFilename();
String SUFFIX = FileUtil.getFileExt(fileName);
File uFile = new File();
uFile.setFileName(fileName);
uFile.setClassify(classify);
uFile.setCreateTime(new Date());
uFile.setFileType(SUFFIX);
String uuid = FileUtil.uuid();
try {
uFile.setPath(uploadFile(uuid,file) +uuid+"."+SUFFIX);
} catch (IOException e) {
e.printStackTrace();
}
fileService.save(uFile);
}
}
}
}
return R.ok();
}
上傳文件到本地的靜態(tài)方法
/**
* 上傳文件
*@author lyy
* @param file
* @return
* @throws IOException
* @throws IllegalStateException
*/
public static String uploadFile(String uuid, MultipartFile file) throws IllegalStateException, IOException {
String defaultUrl = MyFileConfig.getFilePath();
String Directory = java.io.File.separator ;
String realUrl = defaultUrl + Directory;
java.io.File realFile = new java.io.File(realUrl);
if (!realFile.exists() && !realFile.isDirectory()) {
realFile.mkdirs();
}
String fullFile = realUrl + uuid + "."+FileUtil.getFileExt(file.getOriginalFilename());
file.transferTo(new java.io. File(fullFile));
String relativePlanUrl = Directory;
return relativePlanUrl.replaceAll("\\", "/");
}
?到此這篇關(guān)于Vue+Element+Springboot圖片上傳的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Vue+Element+Springboot圖片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Springboot+Vue實(shí)現(xiàn)文件上傳和下載功能
- 基于SpringBoot和Vue實(shí)現(xiàn)頭像上傳與回顯功能
- Vue?+?SpringBoot?實(shí)現(xiàn)文件的斷點(diǎn)上傳、秒傳存儲(chǔ)到Minio的操作方法
- springboot+vue實(shí)現(xiàn)阿里云oss大文件分片上傳的示例代碼
- Java實(shí)現(xiàn)大文件的分片上傳與下載(springboot+vue3)
- springboot整合vue2-uploader實(shí)現(xiàn)文件分片上傳、秒傳、斷點(diǎn)續(xù)傳功能
- 利用Springboot+vue實(shí)現(xiàn)圖片上傳至數(shù)據(jù)庫(kù)并顯示的全過(guò)程
- Springboot+Vue-Cropper實(shí)現(xiàn)頭像剪切上傳效果
- springboot + vue+elementUI實(shí)現(xiàn)圖片上傳功能
相關(guān)文章
Vue插件實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題總結(jié)
隨著Vue.js越來(lái)越火,Vue.js 的相關(guān)插件也在不斷的被貢獻(xiàn)出來(lái),數(shù)不勝數(shù),這篇文章主要給大家介紹了關(guān)于Vue插件實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題,需要的朋友可以參考下2021-08-08
關(guān)于Vue Router的10條高級(jí)技巧總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于Vue Router的10條高級(jí)技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
詳解windows下vue-cli及webpack 構(gòu)建網(wǎng)站(二)導(dǎo)入bootstrap樣式
這篇文章主要介紹了詳解windows下vue-cli及webpack 構(gòu)建網(wǎng)站(二)導(dǎo)入bootstrap樣式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
springboot?vue測(cè)試平臺(tái)前端項(xiàng)目查詢(xún)新增功能
這篇文章主要為大家介紹了springboot+vue測(cè)試平臺(tái)前端項(xiàng)目實(shí)現(xiàn)查詢(xún)新增功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Vue使用輪詢(xún)定時(shí)發(fā)送請(qǐng)求代碼
這篇文章主要介紹了Vue使用輪詢(xún)定時(shí)發(fā)送請(qǐng)求代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
vue2更改data里的變量不生效時(shí),深層更改data里的變量問(wèn)題
這篇文章主要介紹了vue2更改data里的變量不生效時(shí),深層更改data里的變量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
element-plus日歷(Calendar)動(dòng)態(tài)渲染以及避坑指南
這篇文章主要給大家介紹了關(guān)于element-plus日歷(Calendar)動(dòng)態(tài)渲染以及避坑指南的相關(guān)資料,這是最近幫一個(gè)后端朋友處理一個(gè)前端問(wèn)題,elementUI中calendar日歷組件內(nèi)容進(jìn)行自定義顯示,實(shí)現(xiàn)類(lèi)似通知事項(xiàng)的日歷效果,需要的朋友可以參考下2023-08-08

