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

vue實(shí)現(xiàn)文件上傳,前后端

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

前端封裝el-upload組件,父組件傳值dialogVisible(用于顯示el-dialog),子組件接收,并且關(guān)閉的時(shí)候返回一個(gè)值(用于隱藏el-dialog),最多上傳五個(gè)文件,文件格式為.jpg\pdf\png

<template>
    <div>
       <el-dialog  width="30%"  :visible.sync="dialogShow" append-to-body @close='handleCancle' title="上傳發(fā)票" class="uploadDialog">
        <!-- 
            list-type="picture"
           :file-list="fileList"
            :on-change="changeFileLength"
            :on-success="handleAvatarSuccess"
            multiple
        -->
        <el-upload
           ref="upload"
           :auto-upload="false"
           :on-remove="handleRemove"
           :on-change="changeFileLength"
           :limit="5"
           :on-exceed="handleExceed"
           action="https://jsonplaceholder.typicode.com/posts/"
           list-type="picture"
           :file-list="fileList"
           accept=".pdf,.jpg,.png" 
           multiple
           >
            <i class="el-icon-upload"></i>
            <div class="el-upload__text">選擇文件</div>
            <!-- <div slot="tip" class="el-upload__tip">只能上傳jpg/png/pdf文件,且不超過(guò)500kb</div> -->
        </el-upload>
        <el-button @click="upload" type="success">上傳文件</el-button>
      </el-dialog> 
    </div>
</template>
<script>
import {  upload1 } from "@/api/invoice/invoiceManagement";
import pdfde from "./pdfdefine.png";

export default {
    name: "uploadCT",
    props:{
        dialogVisible:{
            type:Boolean,
            default:false,
            require:true,
        }
    },
    watch: {
        dialogVisible: {
            handler(val) {
                this.dialogShow = val
            },
            deep: true, // 深度監(jiān)聽(tīng)
            immediate: true, // 初次監(jiān)聽(tīng)即執(zhí)行  
        },
    },

    data(){
        return{
            // 上傳文件的列表
            uploadFiles: [],
            // 上傳文件的個(gè)數(shù)
            filesLength: 0,
            // 上傳需要附帶的信息
            info:{
                id:"",
                name:"",
            },
            //顯示
            dialogShow:this.dialogVisible,
            //縮略圖
            fileList:[],
            def : pdfde,
        }
    },

    methods:{
        //刪除
        handleRemove(file, fileList){
            console.log("移除");
            this.fileList=this.fileList.filter(item=>item.name!=file.name);
            this.uploadFiles =this.uploadFiles.filter(item=>item.name!=file.name);
            this.filesLength=fileList.length;
        },
        //超出限制提示
        handleExceed(files, fileList) {
            this.$message.warning(`當(dāng)前限制選擇 5 個(gè)文件,本次選擇了 ${files.length} 個(gè)文件,共選擇了 ${files.length + fileList.length} 個(gè)文件`);
        },
        //關(guān)閉
        handleCancle(){
            this.uploadFiles= [];
            // 上傳文件的個(gè)數(shù)
            this.filesLength= 0;
            this.dialogShow = false;
            this.$emit('closeUploadDialog',this.dialogShow);
            this.$refs.upload.clearFiles();
            this.fileList=[];
        },
        // 選擇文件觸發(fā)事件
        changeFileLength(file, fileList){
            console.log("選擇",file,fileList);
            this.filesLength = fileList.length;
            if(file.name.endsWith('.pdf')){
                this.fileList.push({
                    name:file.name,
                    url: this.def,
                })
            }else{
                this.fileList.push({
                    name:file.name,
                    url:file.url,
                })
            }
            this.uploadFiles=fileList;
        },

        // 用戶點(diǎn)擊上傳調(diào)用
        async upload(){
            // 觸發(fā)上傳 調(diào)用配置 :http-request="uploadFile"
            // 即觸發(fā) uploadFile函數(shù)
            console.log('點(diǎn)擊',this.filesLength);
            if(this.filesLength>0){
                this.fileList[0].staus='ready';
                // await this.$refs.upload.submit();
                await this.uploadFilesToService();
                // 上傳完成后執(zhí)行的操作 ...
                
            }else{
                this.$modal.msgError( "請(qǐng)先選擇文件");
            }
        },
        //上傳按鈕
        async uploadFilesToService(){
            console.log("上傳",this.uploadFiles.length,this.filesLength);
            let that = this;
            if (this.uploadFiles.length == this.filesLength){
                // 創(chuàng)建FormData上傳
                let fd = new FormData()
                // 將全部文件添加至FormData中qingxian
                this.uploadFiles.forEach(file => {
                    fd.append('file', file.raw)
                })
                // 將附加信息添加至FormData
                fd.append("id", this.info.id)
                fd.append("name", this.info.name)
                // 配置請(qǐng)求頭
                const config = {
                    headers: {
                        "Content-Type": "multipart/form-data",
                    }
                }
                console.log("參數(shù)",fd);
                // 上傳文件
                await upload1(fd).then(res => {
                    /*上傳成功處理*/
                    console.log(res);
                    if(res.msg=='上傳成功'){
                        this.uploadFiles=[];
                        this.filesLength = 0;
                        this.dialogShow = false;
                        this.$emit('closeUploadDialog',this.dialogShow);
                        this.$refs.upload.clearFiles();
                        this.uploadFiles = [];
                        this.filesLength = 0;
                        this.fileList = [];
                        this.$refs.upload.clearFiles();
                        this.$modal.msgSuccess("上傳成功");
                    }else{
                        console.log("失敗");
                        const arr1 =res.data.data;
                        this.$nextTick(()=>{
                            arr1.map(item1=>{
                                this.uploadFiles = this.uploadFiles.filter(item2=>item2.name!=item1);
                                this.fileList = this.fileList.filter(item=>item.name!=item1);
                            })
                        })
                        
                        this.filesLength=this.filesLength-arr1.length;
                        console.log(this.uploadFiles,this.filesLength);
                        this.$modal.msgError(res.data.msg);
                    }
                    
                }).catch(err => {/*報(bào)錯(cuò)處理*/console.log("報(bào)錯(cuò)",err);});

            }
        }
    }
}
</script>


    
    

后端接收

@PostMapping("/upload")
    public AjaxResult upload(@RequestParam(value = "file") MultipartFile[] file)
    {
        ArrayList<String> successList = new ArrayList<>();
        try {
            String localPath = "";
            //1.1獲取當(dāng)前日期,當(dāng)做本地磁盤(pán)的目錄
            Date nowDate = DateUtils.getNowDate();
            String format = new SimpleDateFormat("YYYYMMDD").format(nowDate);
            String localPathPrefix = "C:\\"+format;
            for(MultipartFile f:file){
                // 獲取文件名
                String fileName = f.getOriginalFilename();
                // 獲取文件后綴
                String prefix = fileName.substring(fileName.lastIndexOf("."));
                // 保存文件到本地磁盤(pán)
                localPath = localPathPrefix+"\\"+fileName;
                File localFile = new File(localPath);
                if (!localFile.getParentFile().exists()) {
                    localFile.getParentFile().mkdirs();
                }
                //寫(xiě)入到本地磁盤(pán)
                f.transferTo(localFile);
                // 獲取文件在本地磁盤(pán)上的路徑
                String filePath = localFile.getAbsolutePath();
                log.info("文件名稱:"+fileName+"已經(jīng)存入本地磁盤(pán),全路徑為:"+filePath);
                //成功一個(gè),將文件名放入一個(gè)successList
                int i = finInvoiceDefineService.OCRToService(filePath);
                //刪除本地臨時(shí)磁盤(pán)文件
                if (localFile.delete()) {
                    log.info(localFile.getName() + "已經(jīng)刪除");
                } else {
                    log.info("文件刪除失敗");
                }
            }
            //刪除本次磁盤(pán)的日期目錄
            File file1 = new File(localPathPrefix);
            if (file1.delete()) {
                log.info(file1.getName() + "已經(jīng)刪除");
            } else {
                log.info("文件刪除失敗");
            }

        }catch (Exception e){
            log.error(e.toString());
            HashMap<String, Object> stringObjectHashMap = new HashMap<>();
            stringObjectHashMap.put("msg","OCR識(shí)別失敗");
            stringObjectHashMap.put("data",successList);
            return success(stringObjectHashMap);
        }
        return success("上傳成功");
    }

效果展示

vue實(shí)現(xiàn)文件上傳,前后端,vue.js,javascript,前端

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-661026.html

到了這里,關(guān)于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)文章

  • vue前端實(shí)現(xiàn)上傳文件的兩種方式

    1.使用form表單的形式 第一種方式就是使用FormData的方式進(jìn)行上傳 html代碼: JS代碼: 2.使用element-ui的el-upload的方式進(jìn)行上傳 這里我是根據(jù)需求封裝了一個(gè)組件

    2024年02月11日
    瀏覽(28)
  • 應(yīng)用開(kāi)發(fā)平臺(tái)前端集成vue-simple-uploader實(shí)現(xiàn)文件分塊上傳

    應(yīng)用開(kāi)發(fā)平臺(tái)前端集成vue-simple-uploader實(shí)現(xiàn)文件分塊上傳

    文件的上傳是系統(tǒng)的必備功能,Element提供了上傳組件upload,也基本能滿足常見(jiàn)常用的文件上傳功能,特別是應(yīng)對(duì)小型文件(10M以下)的處理。但如果是遇到要求更多更高的場(chǎng)景,上傳幾百兆甚至上G的視頻文件,要求分塊上傳,能斷點(diǎn)續(xù)傳,顯示進(jìn)度,能暫停,能重試……這

    2024年02月08日
    瀏覽(94)
  • .net6Api后臺(tái)+VUE3前端實(shí)現(xiàn)上傳和下載文件全過(guò)程

    .net6Api后臺(tái)+VUE3前端實(shí)現(xiàn)上傳和下載文件全過(guò)程

    首先本文參考的是,感謝博主: net6WebApi上傳下載文件_cduoa的博客-CSDN博客_webapi下載文件 在博主的基礎(chǔ)上,增加了新的功能,代碼中有注明,并且使用VUE3前端實(shí)現(xiàn)。 后端部分: 1.首先建立IFileService文件 2.建立FileService文件 3.增加FileController文件 4.Program文件中,進(jìn)行配置和跨域

    2023年04月09日
    瀏覽(32)
  • vue前端開(kāi)發(fā)中,通過(guò)vue.config.js配置和nginx配置,實(shí)現(xiàn)多個(gè)入口文件的實(shí)現(xiàn)方法

    由于vue為單頁(yè)面項(xiàng)目,通過(guò)控制組件局部渲染,main.js是整個(gè)項(xiàng)目唯一的入口,整個(gè)項(xiàng)目都在一個(gè)index.html外殼中。 若項(xiàng)目過(guò)大,會(huì)造成單頁(yè)面負(fù)載過(guò)重;同時(shí),多頁(yè)面利于模塊獨(dú)立部署。 如果項(xiàng)目中不同的頁(yè)面需要不同的main.js和App.vue這樣就需要配置多個(gè)入口了。 要單獨(dú)將頁(yè)

    2024年01月22日
    瀏覽(29)
  • 前后端分離架構(gòu)文件上傳與下載(含Vue?+?Spring完整代碼)

    本文采用前后端分離式的架構(gòu),其中涉及到文件下載的需求,文件下載在任何系統(tǒng)中都是比較常見(jiàn)的。對(duì)于前后端分離架構(gòu)的文件下載與往常的寫(xiě)法有些許不同(試過(guò)直接使用a標(biāo)簽,href填上下載地址,發(fā)現(xiàn)行不通),所以經(jīng)過(guò)查找與嘗試,以下文件下載前后端實(shí)現(xiàn)流程供大家參

    2024年02月15日
    瀏覽(106)
  • minio&前后端分離上傳視頻/上傳大文件——前后端分離斷點(diǎn)續(xù)傳&minio分片上傳實(shí)現(xiàn)

    minio&前后端分離上傳視頻/上傳大文件——前后端分離斷點(diǎn)續(xù)傳&minio分片上傳實(shí)現(xiàn)

    ????????分布式文件系統(tǒng)-minio: 第一章:分布式文件系統(tǒng)介紹與minio介紹與使用(附minio java client 使用) 第二章:minio前后端分離上傳視頻/上傳大文件——前后端分離斷點(diǎn)續(xù)傳minio分片上傳實(shí)現(xiàn) 斷點(diǎn)續(xù)傳指的是在下載或上傳時(shí),將下載或上傳任務(wù)(一個(gè)文件或一個(gè)壓縮包

    2024年02月03日
    瀏覽(44)
  • 【JS】前端分片上傳大文件(支持1G以上的超大文件)

    ? ? ? ?如果將大文件一次性上傳, 耗時(shí)會(huì)非常長(zhǎng),甚至可能傳輸失敗 ,那么我們?cè)趺唇鉀Q這個(gè)問(wèn)題呢?既然大文件上傳不適合一次性上傳,那么我們可以嘗試將文件分片散上傳。 這樣的技術(shù)就叫做分片上傳。分片上傳就是將大文件分成一個(gè)個(gè)小文件(切片),將切片進(jìn)行

    2024年04月11日
    瀏覽(25)
  • 如何使用Vue實(shí)現(xiàn)Excel表格數(shù)據(jù)的導(dǎo)入,在前端實(shí)現(xiàn)Excel表格文件的上傳和解析,并使用Table組件將解析出來(lái)的數(shù)據(jù)展示在前端頁(yè)面上

    隨著互聯(lián)網(wǎng)的發(fā)展和社會(huì)的進(jìn)步,各個(gè)行業(yè)的數(shù)據(jù)量越來(lái)越大,對(duì)于數(shù)據(jù)的處理變得越來(lái)越重要。其中,Excel表格是一種重要的數(shù)據(jù)處理工具。在前后端項(xiàng)目中,實(shí)現(xiàn)Excel表格的導(dǎo)入和導(dǎo)出功能也愈加常見(jiàn)。這篇文章將介紹如何使用Vue實(shí)現(xiàn)Excel表格數(shù)據(jù)的導(dǎo)入。 在開(kāi)始介紹實(shí)現(xiàn)

    2024年02月11日
    瀏覽(34)
  • 大文件分片上傳的實(shí)現(xiàn)【前后臺(tái)完整版】

    在一般的產(chǎn)品開(kāi)發(fā)過(guò)程中,大家多少會(huì)遇到上傳視頻功能的需求,往往我們采用的都是對(duì)視頻大小進(jìn)行限制等方法,來(lái)防止上傳請(qǐng)求超時(shí),導(dǎo)致上傳失敗。這時(shí)候可能將視頻分片上傳可以對(duì)你的項(xiàng)目有一個(gè)小小的體驗(yàn)優(yōu)化。 本片文章前端是vue,后臺(tái)基于PHP進(jìn)行的分片上傳,需

    2024年02月10日
    瀏覽(20)
  • 若依微服務(wù)中的上傳文件的前后端實(shí)現(xiàn)

    前端: :limit用來(lái)控制上傳文件數(shù)量的默認(rèn)一 后端 若依項(xiàng)目自帶的詳情自己下載自己去找service層去看吧

    2024年02月01日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包