1. 程式人生 > 實用技巧 >vue+springboot+element+vue-resource實現檔案上傳

vue+springboot+element+vue-resource實現檔案上傳

目錄

vue+springboot+element+vue-resource實現檔案上傳

vue頁面設定

            <el-upload
              class="upload-demo"
              action=""
              :before-upload="beforeUpload"  //上傳前操作
              :before-remove="beforeRemove"  //移除錢操作
              :multiple="false"   //禁止多選
              :http-request="myUpload" //檔案上傳,重寫檔案上傳方法,action的路徑不會起作用
              accept=".jar"   //限制檔案選擇型別
              :drag="false"
              :data="param"  //引數
              :file-list="fileList">//檔案顯示列表
              <el-button size="small" type="primary">點選上傳</el-button>
              <div slot="tip" class="el-upload__tip">只能上傳jar檔案,且不超過500kb</div><!-- :headers="head"-->
            </el-upload><!--:on-preview="handlePreview"-->

      /*檔案上傳前,判斷檔名是否存在,等其他處理*/
      beforeUpload(file){
        console.log("檔名",file.name,this.fileList)
        for (let i = 0; i <this.fileList.length ; i++) {
          if (this.fileList[i].name==file.name) {
            this.$message.info("檔案已存在");
            return false;
          }
        }
        this.file=file;

        return true;
      },
        /*檔案移除前,提示是否刪除*/
      beforeRemove(file,fileList){//delJar
        this.$confirm('此操作將永久刪除該檔案, 是否繼續?', '提示', {
          confirmButtonText: '確定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$http.get('/aaaa/task/del?taskId='+this.taskId+'&name='+file.name).then(function(res) {
           ......
          });
        }).catch(() => {
          this.getJarList();
          return false;
        });
      },
      /*檔案上傳,重寫檔案上傳方法,action的路徑不會起作用*/
      myUpload(file){
        let fd = new FormData();
        fd.append('file',this.file);//傳檔案
        fd.append('taskId',this.taskId);//傳其他引數
        // fd.append('filename',file.name);//傳其他引數
        this.$http.post('/aaaa/task/add',fd).then(function(res) {
          ....
        });

      },
fileList一個物件的內容
name:"xxxx.jar"
status:"success"
uid:123456456
引數
this.param={
    taskId:this.taskId
}

springboot設定

1.請求的註解:produces = "multipart/form-data;charset=utf-8", method = RequestMethod.POS

    @RequestMapping(value = "/add", produces = "multipart/form-data;charset=utf-8", method = RequestMethod.POST)
    public String addJar(int taskId, HttpServletRequest request) throws IOException, ServletException {
        ....
        //獲取檔案
        Part part = request.getPart("file");// input的name值
        String dis = part.getHeader("Content-Disposition");
        // 獲取檔名--sdsf.jar
        String fna = dis.substring(dis.indexOf("filename=") + 10, dis.length() - 1);
        String fname = fna.substring(fna.lastIndexOf("\\") + 1, fna.length());// 有的瀏覽器獲取的是路徑+檔名
        // 若是檔名為空,說明此時沒有選擇檔案,返回,檔案上傳失敗,選擇檔案
        if (fname.length() < 1) {
          //此時沒有選擇檔案
        }
       ....
    }