返回首页

文件上传示例

演示 FileUploader 组件的用法,上传地址由环境变量 NEXT_PUBLIC_UPLOAD_URL 配置。

当前配置

NEXT_PUBLIC_UPLOAD_URLhttps://api.sparrowzoo.com/upload.json
pathTypeim

FileUploader 文件上传组件使用说明

概述

FileUploader 是通用文件上传组件,封装了「选择文件 → 携带 token 上传 → 进度回调 → 结果回调」的完整流程。

  • 位置:src/common/components/file/FileUploader.tsx
  • 技术栈:React(客户端组件)+ axios + react-hot-toast + next-intl

快速开始

import FileUploader from "@/common/components/file/FileUploader";
import {UPLOAD_URL} from "@/common/lib/Env";

<FileUploader
    url={UPLOAD_URL}
    uploadCallback={(url, fileName) => console.log(url, fileName)}
    uploadIcon={<button>上传</button>}
    id="my-uploader"
/>

环境变量

上传地址由环境变量 NEXT_PUBLIC_UPLOAD_URL 配置,代码通过 Env.ts 统一读取。

环境配置值
developmenthttp://localhost:8888/upload.json
productionhttps://api.sparrowzoo.com/upload.json

前缀 NEXT_PUBLIC_ 必须保留,Next.js 只会把带该前缀的变量内联到客户端。

Props

Prop类型必填默认值说明
urlstring是-上传接口地址
uploadCallback(url, fileName) => void是-成功回调
uploadIconReactNode是-触发上传的图标
idstring是-input 唯一 id
pathTypestring否"im"上传路径类型

上传流程

  1. 点击 uploadIcon 触发文件选择
  2. 校验文件(空则提示「请选择文件」)
  3. 组装 FormData(file + pathType)
  4. 从 CrosStorage 获取 token
  5. axios POST 上传,实时上报进度
  6. 判断 result.code(非 "0" 则提示错误)
  7. 成功则回调 uploadCallback
  8. 复位 uploading 与 progress

返回结构 Result

interface Result {
    code: string;      // "0" 表示成功
    message?: string;  // 失败提示
    data: any;         // 文件地址等业务数据
}

国际化

Key中文英文
select-file请选择文件Please select a file
upload-success上传成功Upload successful
upload-failed上传失败: {message}Upload failed: {message}