通过Javascript创建File()实例在Firefox v21.0中失败

时间:2018-01-19 20:11:24

标签: javascript firefox file-upload form-data

我正在开发一个JS功能,它将从一些动态数据创建一个文本文件,并将其上传到服务器。

使用File interface,我可以在从个人笔记本电脑上测试时成功动态创建文件。笔记本电脑规格如下:

  • 计算机/操作系统: MacBook Pro 10.11.6(El Capitan)
  • 浏览器:
    1. Chrome v63.0.3239.132
    2. FireFox v46.0.1

但是,当我使用基于Linux的操作系统在另一个桌面上尝试完全相同的代码时,我收到一个安全错误。桌面规格如下:

  • 计算机/操作系统: Porteus v2.1(Linux Slackware v14.0)
  • 浏览器: FireFox v21.0

我意识到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);

错误是:

  • 例外:操作不安全。
  • 代码:18
  • nsresult:0x80530012

在向Google神咨询上述问题时,我找到this other SO post,其中说明:

  

剥离图层后,您指的行正在尝试在文件输入字段上设置input.value。出于安全原因,这是不可能的。文件输入字段的值必须由用户选择,不能由JavaScript设置。

但是我没有改变任何表单输入字段的值。如果这是原因,那就不能解释为什么它适用于较新版本的FF,而不是旧版本(人们会认为安全限制将在更高版本中实施,而不是相反)。

任何输入都会有所帮助。谢谢!

-J

0 个答案:

没有答案