<template> <!-- action 必選參數,上傳的地址 accept 接受上傳的文件類型 multiple 是否支持多選文件 limit 最大允許上傳個數 http-request 覆蓋默認的上傳行為,可以自定義上傳的實現 file-list 上傳的文件列表 --> <el-upload class="upload-demo" :action="this.uploadUrl" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" multiple :limit="1" :http-request="uploadFile" :file-list="fileList" > <samp class="component-export-cell">導入</samp> </el-upload> </template> <script> import axios from "axios"; export default { props: ["state"], data() { return { uploadUrl: this.state.uploadtApi, // url 上傳接口 fileList: [], // 上傳文件的數據列表 }; }, methods: { // 覆蓋 el-upload 組件默認的 上傳 uploadFile(item) { // 創建 FormData 對象 let param = new FormData(); // 通過 append() 方法來追加數據 param.append("file", item.file); // 通過 get 方法對值進行讀取 console.log(param.get("file")); // 請求接口 axios({ method: "post", url: this.uploadUrl, headers: { "Content-Type": "multipart/form-data", // 請求頭 類型 }, data: param, }) .then((res) => { if (res.data && res.data.code === "0000") { console.log("導入成功"); } }) .catch((error) => { console.log(error); }); }, }, }; </script> <style lang="less" scoped> .component-export-cell { width: 60px; height: 32px; display: block; line-height: 32px; font-size: 14px; color: #ffffff; text-align: center; font-weight: bold; background: linear-gradient(to right, #2644d7 0%, #0a0b93 100%); border-radius: 18px; margin: 10px 20px 0 0; &:hover { text-decoration: none; } } </style>