欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue+Element+Springboot圖片上傳的實(shí)現(xiàn)示例

 更新時(shí)間:2021年11月25日 15:57:01   作者:java李楊勇  
最近在學(xué)習(xí)前段后分離,本文介紹了Vue+Element+Springboot圖片上傳的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

最近沒事剛好聯(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里面的元素解釋:

  • 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)接口問題. # 待優(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)的話通過HttpServletRequest request--WebUtils

.getNativeRequest(request, MultipartHttpServletRequest.class)來獲取文件請(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3集成jsoneditor的方法詳解

    vue3集成jsoneditor的方法詳解

    JSONEditor是一個(gè)基于Web的工具,用于查看、編輯、格式化和驗(yàn)證JSON,它有各種模式,這篇文章主要為大家介紹了vue3集成jsoneditor的教程,希望對(duì)大家有所幫助
    2023-09-09
  • vue?px轉(zhuǎn)rem配置詳解

    vue?px轉(zhuǎn)rem配置詳解

    這篇文章主要為大家介紹了vue?px轉(zhuǎn)rem配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • vue-cli3配置多項(xiàng)目并按項(xiàng)目分別實(shí)現(xiàn)打包

    vue-cli3配置多項(xiàng)目并按項(xiàng)目分別實(shí)現(xiàn)打包

    這篇文章主要介紹了vue-cli3配置多項(xiàng)目并按項(xiàng)目分別實(shí)現(xiàn)打包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue使用echarts散點(diǎn)圖在區(qū)域內(nèi)標(biāo)點(diǎn)

    Vue使用echarts散點(diǎn)圖在區(qū)域內(nèi)標(biāo)點(diǎn)

    這篇文章主要為大家詳細(xì)介紹了Vue使用echarts散點(diǎn)圖在區(qū)域內(nèi)標(biāo)點(diǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 基于vue.js輪播組件vue-awesome-swiper實(shí)現(xiàn)輪播圖

    基于vue.js輪播組件vue-awesome-swiper實(shí)現(xiàn)輪播圖

    一般做移動(dòng)端輪播圖的時(shí)候,最常用的就是Swiper插件了,而vue.js也有一個(gè)輪播組件vue-awesome-swiper,用法跟swiper相似。接下來通過本文給大家詳解講解vue.js輪播組件vue-awesome-swiper實(shí)現(xiàn)輪播圖實(shí)例代碼,需要的朋友參考下
    2017-03-03
  • Vue實(shí)現(xiàn)進(jìn)度條變化效果

    Vue實(shí)現(xiàn)進(jìn)度條變化效果

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)進(jìn)度條變化效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解elementUI中input框無法輸入的問題

    詳解elementUI中input框無法輸入的問題

    這篇文章主要介紹了詳解elementUI中input框無法輸入的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue實(shí)現(xiàn)右鍵菜單組件的超詳細(xì)教程(支持快捷鍵)

    Vue實(shí)現(xiàn)右鍵菜單組件的超詳細(xì)教程(支持快捷鍵)

    右鍵菜單組件非常常見,所有的前端開發(fā)工程師都會(huì)遇到類似的功能組件開發(fā)需求,這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)右鍵菜單組件的超詳細(xì)教程,文中介紹的方法支持快捷鍵,需要的朋友可以參考下
    2024-02-02
  • Vue組件更新數(shù)據(jù)v-model不生效的解決

    Vue組件更新數(shù)據(jù)v-model不生效的解決

    這篇文章主要介紹了Vue組件更新數(shù)據(jù)v-model不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3子組件數(shù)據(jù)無法更新問題

    vue3子組件數(shù)據(jù)無法更新問題

    這篇文章主要介紹了vue3子組件數(shù)據(jù)無法更新問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論