【问题标题】:File Destination Chooser文件目的地选择器
【发布时间】:2014-01-26 02:39:48
【问题描述】:

我想创建一个文件目标选择器,就像从浏览器选择下载文件的保存目标一样。但我不知道如何弄清楚。

我想创建一些文件并将它们保存在用户选择的位置。类似于在 Eclipse IDE 和浏览器中为源文件夹创建新的 Java 类。

我找到了很多 文件上传器,但这些都是浏览特定文件而不是文件夹。

对我的问题有什么建议吗?非常感谢您的建议。

尤其是我更喜欢用 Java 创建(但不是摇摆,因为我正在创建 web 项目),但我也可以被 JavaScript 或其他一些有用的库使用。

【问题讨论】:

  • @Andrew Thompson ,我想我有时会花在它上面。我仍然是java的初学者。 java EE中的真正菜鸟。所以,我不能说任何关于 JApplet 的事情,因为它没有 exp。能满足我的问题吗?我对 JFileChooser 了解一点。
  • “它可以满足我的问题吗?” ...你真的认为如果我这样做不 这么认为?
  • @Andrew Thompson,对不起先生!您描述了指向 JApplet 的链接,所以我的问题含糊不清。

标签: java javascript file file-upload applet


【解决方案1】:

如果您想自定义在浏览器中下载文件的方式,则无法通过标准浏览器功能(HTML/CSS/Javascript)来完成。

根据响应中发送的Content-Disposition HTTP 标头的值,浏览器将在文件下载时执行以下两种操作之一:

  • 尝试根据文件的扩展名解析文件,如果是 HTML 则呈现文件,如果是 xml 则显示文件等
  • 如果 Content-Disposition 设置为 attachment,它将打开一个非常基本的弹出窗口,询问将文件保存在哪里,无法控制或自定义弹出窗口。

如果您想要比浏览器更多的功能,那么您需要一个小程序(或用户必须安装的其他插件)。

但由于去年大部分时间浏览器中的 Java 存在安全问题,这些天浏览器都不愿意运行小程序,并且即使用户已经安装了 Java,它们也会要求许多用户确认。

如果该站点的用户必须下载 Java 并单击多个弹出窗口才能使文件下载小部件工作,他们可能会离开该站点。

Applet 是当今最好避免使用的过时技术,因此在网络浏览器中保存文件的基本弹出窗口是目前最实用的解决方案。

【讨论】:

  • 我已经更新了文件下载的答案,通过在响应中设置标题,您可以触发默认浏览器下载功能,这是目前最实用的解决方案。
  • 现在我意识到我无法从服务器将文件保存在客户端计算机上。这是完全不可能的。我必须将文件作为常规文件下载提供,然后浏览器将让用户选择保存文件的目录。
【解决方案2】:

..Java(但不是 Swing,因为我正在创建 Web 项目)

Swing 提供JApplet,所以使用它和JFileChooser。有关详细信息和示例,请参阅How to Use File Choosers

【讨论】:

  • “Java 中的真正菜鸟” 那么你的学习曲线就会很陡峭!请参阅Why CS teachers should stop teaching Java applets 了解我对小程序的“咆哮”。请注意,博客文章甚至没有说明此代码需要进行数字签名的事实! ..实际上它确实顺便提到了它。
  • 哇!今天,我的生活中遇到了一位新老师。提前谢谢先生。感谢您提供有用的答案和提示。我非常感谢你。
【解决方案3】:

如果您向网络浏览器发出转到 URL 的命令并且响应返回:

      response.addHeader("Content-Disposition", "attachment; filename=" + "\"" +doc.getFileName()+"\"");
      response.setContentLength(doc.getData().length);
      response.getOutputStream().write(doc.getData());
      response.flushBuffer();

(在这种情况下 doc.getData() 是一个 byte[] 数组)。

然后网络浏览器将检测附件,从文件名推断类型,并向用户显示一个“保存”对话框,让他们也决定将其保存在哪里。

【讨论】:

    【解决方案4】:

    您可以将 JFileCHooser 与 FIle 类方法一起使用,例如

    File a=JFileChooser.getFile();
    

    要了解有关文件类和 JFileChooser 的更多信息,请参阅下面的链接

    For file class

    FileChooser

    【讨论】:

    • @san krish,第二个链接失效了
    【解决方案5】:

    我不确定这是否是您问题的答案/提示。试试看

    使用 HTML 中的标签来浏览文件。下面的示例将专门选择 MS Excel 文件 <input type="file" name="excelFile" value="Browse For Excel File" id="excelfileId" onChange="handleFiles(this.files)" accept="application/vnd.ms-excel"/>

    对于选择文件夹(而不是文件),没有任何直接标签。希望this code sample可以推荐。

    讨论了一个类似的主题/查询here

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多