javascript - 在 IE11 中规范化文件名并在 Javscript 中创建新文件
问题描述
我正在尝试上传文件,但我想规范化它的名称,它适用于其他浏览器,但在 IE11 中,我搜索并发现不支持这种方法(规范化),所以我正在使用 polyfill不规范。所以规范化现在工作正常,但我们不能直接更改文件名,我们需要创建一个新文件。但是我们不能使用新文件,因为它也不支持。所以我使用了新的 Blob,但问题是我没有在服务器端获取文件名,它总是 Blob。
其他浏览器的代码:
var fileName = file.name.normalize('NFD').replace(/[\u0300-\u036f]/g, "");
var newFile = new File([file], fileName, { type: file.type });
newFile.label = 'FICHIER';
IE11的代码
fileName = unorm.nfd(file.name);
newFile = new Blob([file], { type: file.type });
newFile.label = 'Fichier';
newFile.name= fileName;
要生成对服务器的请求,我使用 formdata :
fd = new FormData();
fd.append("id", param);
fd.append(file.label || "uploadedFile", file, file[paramName]);
你能告诉我我应该怎么做才能得到文件名,或者是否有其他方法可以做到这一点。
解决方案
Blob 对象不包含 name 属性,因此,我们不能通过 Blob 对象更改名称。
获取到文件数据后,我建议你可以附加一个新的参数来记录新的文件名,然后在提交表单或保存上传的文件时,你可以将文件数据和新的文件名发送到服务器。
另外,这里还有一个关于使用FormData上传文件的帖子,请参考:
推荐阅读
- python - 如何使用现有的 SQL Server 数据库
- shell - awk 根据日期条件过滤行
- c++ - 如何从文本文件中读取未排序的年龄并在 C++ 中打印最低和最高年龄?
- java - 使用 Dataflow 更新特定 BQ 分区或数据范围
- c# - 将 Html.DropDownListFor 与 System.Linq.Enumerable 一起使用时,选择/选项中没有值属性
- python - 如何纠正 TypeError:execute() 需要 2 到 4 个位置参数,但给出了 5 个?
- c# - C#如何递归搜索属性名称
- javascript - 每个间隔拆分字符串并将其附加到其相应的数组数组
- python - 问题安装 python 要求。错误:命令出错,退出状态为 1
- javascript - 试图让我的函数能够拥有动态选择器,这样我就不必重复自己了