vue 圖片上傳


其實這個問題一直困擾了我很久,因為上傳圖片功能一直是把我搞的雲里霧里的,而這次我終於是徹底的把它搞明白了!!!現在把自己的思路整理出來分享一下。

  • 首先完成這個需求我用到了element
  • 用到了axios

先講一下上傳的流程好了。

一般的上傳圖片流程是這樣的:

  • 先將文件通過file的類型發送過去,這個文件會包含uid、name等等
  • 后台成功收到后,將圖片存到ftp,回調會返回一個url,這個url就是圖片引用的src地址了,可以直接訪問啦。

下面是代碼部分

  • 首先element找到上傳圖片的組件。
<el-upload action="233" :auto-upload="false" :http-request="postPhoto" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :limit="1" :on-change="fail">
      <i class="el-icon-plus"></i>
    </el-upload>
    <span>只支持jpg與png格式文件上傳</span>
    <el-dialog :visible.sync="dialogVisible">
      <img width="100%" :src="dialogImageUrl" alt>
    </el-dialog>
    

解釋一下上面的部分

  • 默認的這個上傳組件是自動上傳的,但是我們的需求不需要那樣---:auto-upload="false",所以我設為了fasle。
  • action是必選項,配置上傳的路徑接口,其實如果關閉了自動上傳,這個地址也用不到了,但是要隨便寫點東西。
  • 其他的我就不一一介紹了,文檔里很詳細。這里重點的是:on-change="fail",會監聽變化,只要圖片傳進來了,這里的fail就會有參數傳過去了。當然啦,使用ref去綁定也是可以的,只不過人家element既然有這個方法了,我們就用咯。

下面是js

這里就是上面綁定的change事件了
 fail (file) {
      this.dialogImageUrl = file.url;
      this.dialogImageUrl = new window.File([this.dialogImageUrl], file.name, {
        type: file.type
      });
      上面負責回顯,調用的本地
      // this.dialogVisible = true;
      這里我在data中初始化了一個變量,imgPost,給他賦值。
      this.imgPost = file.raw

    },

  • file就長這個樣子,raw是我們需要的。

這里則是你自己綁定的上傳按鈕了,
 getdat () {
      let token1 = sessionStorage.getItem("token");
      由於我們的后台需要發送token,所以這里存了一下
      
      
      
首先,創建一個新的FormData。
      let formData1 = new FormData();
    
      formData1.append("file", this.imgPost)
      formData1.append("token", token1)
  // 划重點!!這里需要特別說明,你會發現發現打印這個formData1為空。
      這里的append並不是沒有追加進去,是因為控制台打印的formdata是原型,為類的私有字段,外界訪問不到,可以在發送的請求中查看


      // 這就是要傳的文件
      console.log(formData1)
      upload是我的封裝的接口=====換成你自己的即可
      upload(formData1).then(res => {
        如果一切順利,那么這里的res應該就有你們后台給的回調url啦。
        }

祝各位工作順利~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM