ZBLOG

以下是你提供的代码片段的改进版本,并添加了导入文件部分与接口联调的实现。这段代码展示了一个用于上传 Excel 文件的模态框,用户可以选择文件并在点击“导入”按钮后上传。

<template>
  <a-modal v-model:open="open" title="上传文件" @ok="handleOk">
    <div style="padding: 10px 0px">
      <span>上传文件:</span>
      <a-upload
        :before-upload="beforeUpload"
        @change="handleChange"
        accept=".xlsx,.xls"
        show-upload-list="{ showRemoveIcon: true }"
        :file-list="fileList"
        :on-remove="handleRemove"
      >
        <a-button>导入文件</a-button>
      </a-upload>
    </div>
  </a-modal>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { request } from 'your-request-library'; // 替换为你的请求库

const open = ref(false);
const fileList = ref([]);

const beforeUpload = (file) => {
  const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || 
                  file.type === 'application/vnd.ms-excel';
  
  if (!isExcel) {
    // 可以在这里提示用户只允许上传 Excel 文件
    alert('只能上传 Excel 文件!');
  }
  
  return isExcel;
};

const handleChange = ({ fileList: newFileList }) => {
  fileList.value = newFileList;
};

const handleRemove = (file) => {
  const index = fileList.value.indexOf(file);
  if (index >= 0) {
    fileList.value.splice(index, 1);
  }
};

const updataData = async () => {
  const formData = new FormData();
  
  if (fileList.value.length > 0) {
    formData.append('file', fileList.value[0].originFileObj); // 获取第一个文件
    
    try {
      const response = await request({
        url: '/api/upload', // 替换为实际的接口地址
        method: 'POST',
        data: formData,
      });
      
      console.log('上传成功:', response);
      open.value = false; // 上传成功后关闭模态框
    } catch (error) {
      console.error('上传失败:', error);
    }
    
    // 清空已上传列表(可选)
    fileList.value = [];
  } else {
    alert('请先选择文件');
  }
};

const handleOk = () => {
  updataData();
};
</script>

<style scoped>
/* 添加样式(如需要) */
</style>

注意事项:

  1. request:确保你根据自己的项目替换 request 方法。
  2. 处理文件:此示例中使用的是 FormData 对象来将文件作为 POST 请求发送到服务器。
  3. 错误处理和反馈:建议添加更完善的用户反馈机制,比如显示成功或失败消息。
  4. 接受多个文件:如果需要支持多个文件,可以调整 file-list 和相关逻辑。

希望这能满足你的需求!如有任何问题,请随时问我。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20851

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?