import { request } from '@/utils/request';  // 假设这是你的请求函数
import { ElMessage } from 'element-plus';   // Element Plus 的消息组件
import { t } from '@/locales';             // 国际化函数
import { saveFileByWebApi, saveFileByElementA } from '@/utils/file';  // 文件保存工具函数

const downloadFile = (id: number) => {
  request({
    url: '/admin/file/download',
    method: 'get',
    params: {
      id,
    },
    responseType: 'blob'
  }).then((response: any) => {
    const contentDisposition = response.headers?.['content-disposition'] || '';
    let filename = 'file';
    
    try {
      // 先尝试获取 filename* 参数
      const filenameStarMatch = contentDisposition.match(/filename\*=UTF-8''([^;]*)/);
      if (filenameStarMatch) {
        filename = decodeURIComponent(filenameStarMatch[1]);
      } else {
        // 如果没有 filename*，则尝试获取普通 filename
        const filenameMatch = contentDisposition.match(/filename="([^"]*)"/) || contentDisposition.match(/filename=([^;]*)/);
        if (filenameMatch) {
          filename = filenameMatch[1];
        }
      }
    } catch (error) {
      console.warn('解析文件名失败:', error);
      // 如果解析失败，使用默认文件名
      filename = `download_${id}`;
    }

    // @ts-ignore
    if (window.showSaveFilePicker) {
      saveFileByWebApi(response.data, filename).catch(() => {
        saveFileByElementA(response.data, filename).catch(() => {
          ElMessage.error(t('admin.fileView.download_fail'));
        });
      });
    } else {
      saveFileByElementA(response.data, filename).catch(() => {
        ElMessage.error(t('admin.fileView.download_fail'));
      });
    }
  }).catch(error => {
    console.error('下载文件失败:', error);
    ElMessage.error(t('admin.fileView.download_fail'));
  });
};

export default downloadFile; 