【问题标题】:File upload with Javascript in chrome or firefox extension without user intervention在 chrome 或 firefox 扩展中使用 Javascript 上传文件,无需用户干预
【发布时间】:2014-05-14 12:12:11
【问题描述】:

我已经设法在网页中获取按钮的元素。我知道它的ID、它的等级等等;我什至设法从 Google Chrome 扩展的内容脚本中触发点击事件。该按钮位于 Google 网页内。

虽然有一个浏览按钮,但它会打开一个 openDialog 窗口并提示用户选择某个文件进行上传。如何在不提示用户输入文件的情况下继续自动上传?我只想将内容脚本中的字符串提供给它,然后网页从那里获取它。

在谷歌浏览器、Firefox 中有解决方案吗?

谢谢!

【问题讨论】:

    标签: javascript google-chrome firefox google-chrome-extension firefox-addon


    【解决方案1】:

    如果您从客户端计算机上传,则不能。它是file.upload 的一个安全特性。如果您检查上传文件的路径,您会注意到 c://fakepath/xxxxx 这是为了防止应用程序发现客户端计算机上的文件结构。

    https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

    【讨论】:

    • 是的,它是从客户端的计算机上传的。必须有解决方案...有吗?
    • 不,幸运的是,假设您可以在客户计算机上搜索包含“银行详细信息”、“密码”等的文件。但是您要上传什么?
    • 所以我想唯一的解决方案是在 JAVA、.NET 中创建一个独立的应用程序供客户端使用,以便在没有浏览器的情况下上传文件。知道如何解决这个问题吗?
    • 是的,试试 -docs.oracle.com/javase/tutorial/essential/io/find.html ,这又取决于你用它做什么,你怎么知道文件会存在?为什么需要上传?客户是否愿意为此目的安装应用程序?
    • Firefox 扩展可以使用与浏览器相同的权限访问本地文件系统。
    【解决方案2】:

    在 Firefox 附加组件中(好吧,在特权部分,即不是 SDK page-mods 等),您可以构造一个可以与常规 HTML5 内容一起使用的文件对象(XMLHttpRequestFormData; )) 直接通过the File "constructor":

    var file = File("path/to/some/file");
    

    当谈到 Chrome 时,你很不走运,正如 @David 在另一个答案中已经正确指出的那样。

    编辑 1: 实际上,当涉及到 chrome 时,可能会请求 a file://* permission,让用户明确选择加入,然后使用 xhr 等首先将文件作为 blob 检索,然后将 blob 与另一个 @987654330 一起上传@。不过还没有测试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2020-05-27
      • 2011-05-04
      • 1970-01-01
      相关资源
      最近更新 更多