Vue+ElementUI實現文件的下載與上傳


    當需要批量導入的時候,一般會提供下載示例文件的功能。實現下載功能直接使用<a>標簽即可。

<a class='download' :href='downloadhttp' download=""  title="下載">下載</a>

downloadhttp為文件下載的路徑,download屬性是為了避免瀏覽器直接執行打開而不下載。路徑是下載文件很重要的組成部分,一般為了方便維護都會將文件放在服務器,路徑需要在apiconfig.js文件中判斷是測試端還是服務器端,主要思路是將兩端設置不同的baseUrl,在此不再贅述。downloadhttp = baseUrl + 路徑相同部分。在Linux服務器上最好將文件名設置為英文,中文在解碼時可能會出現偏差,導致文件尋找失敗。

   文件的上傳主要使用element中的el-upload。

<el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :before-remove="beforeRemove"
  multiple
  :limit="3"
  :on-exceed="handleExceed"
  :file-list="fileList">
  <el-button size="small" type="primary">點擊上傳</el-button>
  <div slot="tip" class="el-upload__tip">只能上傳jpg/png文件,且不超過500kb</div>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      },
      handleExceed(files, fileList) {
        this.$message.warning(`當前限制選擇 3 個文件,本次選擇了 ${files.length} 個文件,共選擇了 ${files.length + fileList.length} 個文件`);
      },
      beforeRemove(file, fileList) {
        return this.$confirm(`確定移除 ${ file.name }?`);
      }
    }
  }
</script>

其中action是必須的參數,用來寫傳輸的接口地址。用的比較多的是on-success,這個鈎子為上傳成功時的回調,當傳輸完成后即可調用。無論后台接口返回何值,只要成功上傳,就會調用該函數。但是在實際應用中,由於Excel填寫的格式不正確等問題,會導致后台解析失敗,返回success = 0.這時我們需要使用該方法來進行后續的操作。

<el-upload
  class="upload-demo"
  action=""
  :on-success='handlesuccess'
  multiple
  :limit="3"
  :on-exceed="handleExceed"
  :file-list="fileList">
  <el-button size="small" type="primary">點擊上傳</el-button>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: []//此數組中存入所有提交的文檔信息
      };
    },
    methods: {
      handleExceed(files, fileList) {
        this.$message.warning(`當前限制選擇 3 個文件,本次選擇了 ${files.length} 個文件,共選擇了 ${files.length + fileList.length} 個文件`);
      },
     handlesuccess(response, file, fileList){
    //response即為后台返回的全部內容
     if(response.success === 1){
       console.log('解析成功')
     }else{
        console.log('解析失敗')
       }
     }
    }
  }
</script>

其次使用頻率較高的為clearFiles方法,用來清除已選中的所有文檔信息。上傳時在dialog中進行,當關閉當前dialog,再次打開時需要清空上一次的數據,如果是表格表單類型,可直接將其綁定的數組對象清空,若是文件類型,則需要clearFiles方法來進行清除


免責聲明!

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



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