You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在前端文件上传前修改用户输入的文件名称

前端修改上传图片文件名实现方案

浏览器原生File接口的name属性为只读属性,直接修改赋值不会生效,你可以基于原始文件的二进制内容、自定义文件名、原始文件MIME类型构造一个新的File实例,替换原始文件即可实现需求,完整实现代码如下:

const [getImageFile, setImageFile] = useState([]);

// 自定义文件名生成规则,可根据实际需求修改内部逻辑
const generateCustomFileName = (originalFile) => {
  // 提取原始文件后缀名
  const fileExt = originalFile.name.split('.').pop();
  // 示例命名规则:自定义前缀 + 13位时间戳 + 原始后缀
  return `custom_img_${Date.now()}.${fileExt}`;
};

const handleImageFile = e => {
  const originalFile = e.target.files[0];
  if (!originalFile) return;
  // 生成自定义文件名
  const customFileName = generateCustomFileName(originalFile);
  // 构造新的File对象,替换文件名
  const newFile = new File([originalFile], customFileName, {
    type: originalFile.type,
    lastModified: originalFile.lastModified
  });
  // 存储新构造的文件到状态中
  setImageFile([...getImageFile, newFile]);
};

补充说明

  • 后续提交上传请求时直接使用状态中存储的newFile即可,服务端接收到的文件名就是你自定义的名称
  • 该方案兼容所有主流现代浏览器,如果你需要兼容IE11等老旧浏览器,需要额外引入File构造函数的polyfill
  • 你可以自行修改generateCustomFileName函数的内部逻辑,实现任意你需要的命名规则,比如拼接用户ID、业务分类标识、随机字符串等

内容的提问来源于stack exchange,提问作者Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:57:05