如何从file_selector获取选中文件名?求最优实现方案
解决方案
1. 字符串过滤方案完全可行
如果暂时找不到现成变量,字符串过滤是完全可用的方案。针对你遇到的xxx.N.yaml这类格式(名称与后缀间带数字),可以通过正则或字符串处理提取原始文件名:
- 正则替换:匹配最后一个
.+数字+.的片段并替换为空,示例代码:const originalName = state.path.replace(/\.\d+\./, '.'); // 输入"accounts-config.5.yaml" → 输出"accounts-config.yaml" - 字符串分割拼接:按
.拆分后移除倒数第二个数字元素,再重新拼接:const pathParts = state.path.split('.'); pathParts.splice(-2, 1); // 移除倒数第二个元素(数字部分) const originalName = pathParts.join('.');
只要文件名的数字插入规律固定,这个方法稳定可靠。
2. 优先检查file_selector返回的其他字段
既然点击按钮能弹出带原始文件名的通知,说明该值肯定存在于返回的状态对象中,无需自行过滤。你可以打印整个state对象排查,这类文件选择器通常会提供以下字段:
state.name:大概率直接存储原始文件名(无路径、无中间数字)state.originalName:部分库会用此字段保存用户选择的原始文件名state.file:若返回的是File对象,state.file.name就是原始文件名
直接使用这些原生字段比自行过滤更稳妥,还能避免文件名格式变化带来的适配问题。
内容的提问来源于stack exchange,提问作者Uwes
相关产品推荐
相关产品推荐

