最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端使用vue點擊上傳文件傳送給后端并進行文件接收的方法

 更新時間:2025年01月15日 08:33:34   作者:似璟如你  
這篇文章主要介紹了如何在前端和后端實現(xiàn)文件傳輸,前端使用Vue.js發(fā)送文件,后端使用Java接收文件并處理,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、效果圖

前端頁面:

在java這邊后端的target文件就可以接收到前端發(fā)送的文件,文件可以打開

接下來看具體代碼是怎么實現(xiàn)的!

二、代碼部分

Vue代碼

<template>  
  <el-upload  
    ref="upload"  
    class="upload-demo"  
    action="http://localhost:9090/api/upload"  <!--這個為后端響應(yīng)的路徑-->
    :on-success="handleSuccess"  
    :before-upload="beforeUpload"  
    :file-list="fileList"  
    :auto-upload="false"  
    :on-change="handleChange"  
  >  
    <el-button slot="trigger" size="small" type="primary">選取文件</el-button>  
    <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上傳到服務(wù)器</el-button>  
    <div slot="tip" class="el-upload__tip">只能上傳xlsx/xls文件,且不超過500kb</div>  
  </el-upload>  
</template>  
  
<script>  
export default {  
  // ... 其他代碼保持不變  
  data() {  
    return {  
      fileList: []  
    };  
  },  
  methods: {  
    handleSuccess(response, file, fileList) {  
      console.log('文件上傳成功:', response);  
    },  
    beforeUpload(file) {  
      // 限制格式為excel
      // 如果不想限制可以將這行代碼去掉,以及后面的一些關(guān)于excel的判斷
      const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.type === 'application/vnd.ms-excel';  
      // 限制文件大小
      const isLt2M = file.size / 1024 / 1024 < 0.5;  

      if (!isExcel) {  
        this.$message.error('上傳文件只能是 xls/xlsx 格式!');  
      }  

      if (!isLt2M) {  
        this.$message.error('上傳文件大小不能超過 500KB!');  
      }  
      return isExcel && isLt2M;  
    },  
    submitUpload() {  
      // 這邊的$refs.upload要與上面第三行的ref一致
      this.$refs.upload.submit();  
    },  
    handleRemove(file, fileList) {  
      console.log('移除文件', file, fileList);  
    },  
    handleChange(file, fileList) {  
      this.fileList = fileList;  
    }  
  }    
};  
</script>

后端代碼

(1)首先導(dǎo)入依賴

    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.8.0</version>
    </dependency>

(2)controller層(也可以在servlet寫)

@RequestMapping(value = "/upload")
    public void handleFileUpload(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException{
        // 檢查請求是否為多部分請求
        if (!ServletFileUpload.isMultipartContent(request)) {
            throw new ServletException("Content type is not multipart/form-data");
        }

        // 配置上傳參數(shù)
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        try {
            // 解析請求的內(nèi)容提取文件數(shù)據(jù)
            List<FileItem> formItems = upload.parseRequest(request);

            if (formItems != null && formItems.size() > 0) {
                // 迭代表單數(shù)據(jù)
                for (FileItem item : formItems) {
                    // 處理不在表單中的字段
                    if (!item.isFormField()) {
                        String fileName = new File(item.getName()).getName();
                        //下面的路徑就是你要映射到target的路徑
                        String filePath = request.getServletContext().getRealPath("/") + "WEB-INF"+File.separator+"static" + File.separator + fileName;
                        File storeFile = new File(filePath);

                        // 在控制臺輸出文件的上傳路徑
                        System.out.println(filePath);
                        System.out.println("編碼前的原文: " + fileName);
                        //這一條在控制臺打印可能會出現(xiàn)字符編碼的問題,如浣撴浜哄憳淇℃伅.xlsx
                        //這種是gbk編碼,接下來就將gbk解碼為utf-8
                        byte[] gbkBytes = fileName.getBytes("gbk");
                        for (byte b : gbkBytes) {
                            System.out.print(Integer.toHexString(b & 0xff) + ",");
                        }
                        String gbkToUtf8 = new String(gbkBytes, "utf8");
                        System.out.println("gbk編碼,utf8解碼后的文字: " + gbkToUtf8 + "\n" + "----------------------");
                       

                        // 保存文件到硬盤
                        item.write(storeFile);
                        request.setAttribute("message", "文件上傳成功!");
                    }
                }
            }
        } catch (Exception ex) {
            request.setAttribute("message", "文件上傳失敗!");
        }
    }

這樣子字符編碼就不會出現(xiàn)亂碼 

這樣子寫就可以實現(xiàn)上面的那種效果啦

總結(jié)

到此這篇關(guān)于前端使用vue點擊上傳文件傳送給后端并進行文件接收的文章就介紹到這了,更多相關(guān)前端vue點擊上傳文件傳給后端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中el-table合并列的具體實現(xiàn)

    vue中el-table合并列的具體實現(xiàn)

    本文主要介紹了vue中el-table合并列的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • vue項目中圖片選擇路徑位置static或assets的區(qū)別及說明

    vue項目中圖片選擇路徑位置static或assets的區(qū)別及說明

    這篇文章主要介紹了vue項目中圖片選擇路徑位置static或assets的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue el使用el-checkbox-group復(fù)選框進行單選框方式

    Vue el使用el-checkbox-group復(fù)選框進行單選框方式

    這篇文章主要介紹了Vue el使用el-checkbox-group復(fù)選框進行單選框方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue組件之單向數(shù)據(jù)流的解決方法

    Vue組件之單向數(shù)據(jù)流的解決方法

    這篇文章主要介紹了Vue組件之單向數(shù)據(jù)流的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue-cli11模式&環(huán)境變量使用及說明

    vue-cli11模式&環(huán)境變量使用及說明

    本文主要介紹了Vue?CLI項目中的模式和環(huán)境變量設(shè)置,Vue?CLI有三種默認模式:開發(fā)、測試和生產(chǎn),可以通過--mode選項參數(shù)覆寫默認模式,環(huán)境變量可以從對應(yīng)的環(huán)境文件中載入,NODE_ENV將決定應(yīng)用的運行模式,同時,介紹了環(huán)境文件的加載優(yōu)先級和規(guī)則
    2025-10-10
  • 原生echart和vue-echart的使用詳解

    原生echart和vue-echart的使用詳解

    這篇文章主要為大家詳細介紹了原生echart和vue-echart的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • webpack項目中使用vite加速的兼容模式詳解

    webpack項目中使用vite加速的兼容模式詳解

    這篇文章主要為大家介紹了webpack項目中使用vite加速的兼容模式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 詳解Vue.js 響應(yīng)接口

    詳解Vue.js 響應(yīng)接口

    這篇文章主要介紹了Vue.js 響應(yīng)接口的相關(guān)資料,文中實例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Vue接口封裝的完整步驟記錄

    Vue接口封裝的完整步驟記錄

    對于中小型企業(yè),vue應(yīng)用越來越多,學習vue相對于react的成本要低點,入門相對簡單。這篇文章主要給大家介紹了關(guān)于Vue接口封裝的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • Vuejs 實現(xiàn)簡易 todoList 功能 與 組件實例代碼

    Vuejs 實現(xiàn)簡易 todoList 功能 與 組件實例代碼

    本文通過實例代碼給大家介紹了Vuejs 實現(xiàn)簡易 todoList 功能 與 組件,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09

最新評論

阿合奇县| 平阴县| 静安区| 关岭| 夏津县| 佛坪县| 辉南县| 乐平市| 宕昌县| 当雄县| 鄂托克旗| 泸水县| 特克斯县| 秦安县| 乐业县| 团风县| 苍南县| 如皋市| 新河县| 昭苏县| 惠东县| 浦东新区| 阿拉善盟| 阜新| 昌吉市| 富川| 齐河县| 前郭尔| 义乌市| 永宁县| 鹤峰县| 奎屯市| 辽阳市| 桑日县| 张家口市| 衡东县| 若尔盖县| 福建省| 石屏县| 建阳市| 确山县|