我正在开发一个JS功能,它将从一些动态数据创建一个文本文件,并将其上传到服务器。
使用File interface,我可以在从个人笔记本电脑上测试时成功动态创建文件。笔记本电脑规格如下:
但是,当我使用基于Linux的操作系统在另一个桌面上尝试完全相同的代码时,我收到一个安全错误。桌面规格如下:
我意识到Firefox版本彼此差异很大,但根据文件界面browser compatibility info(or here?),它应该适用于两者。
下面是我运行的确切代码:
var generatedFile = new File(
[
"Line One\r\n",
"Line Two\r\n"
],
"filename.txt",
{ type: "text/plain" }
);
var form_data = new FormData();
form_data.append('file', generatedFile);
console.log('form_data:', form_data);
错误是:
在向Google神咨询上述问题时,我找到this other SO post,其中说明:
剥离图层后,您指的行正在尝试在文件输入字段上设置input.value。出于安全原因,这是不可能的。文件输入字段的值必须由用户选择,不能由JavaScript设置。
但是我没有改变任何表单输入字段的值。如果这是原因,那就不能解释为什么它适用于较新版本的FF,而不是旧版本(人们会认为安全限制将在更高版本中实施,而不是相反)。
任何输入都会有所帮助。谢谢!
-J