Vue+ElementUI實現檔案的下載與上傳

來源:互聯網
上載者:User

標籤:excel   color   標籤   出現   直接   vue   格式不正確   code   return   

    當需要大量匯入的時候,一般會提供下載樣本檔案的功能。實現下載功能直接使用<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方法來進行清除

Vue+ElementUI實現檔案的下載與上傳

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.