2014-01-08 52 views
0

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

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

我发现了很多文件上传器但这些是浏览特定文件而不是文件夹。

对我的问题有什么建议吗?我真的很感激你的建议。

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

+0

@Andrew汤普森,我想我有时会在这上面花。我仍然是java的初学者。真的在Java EE noob。所以,我不能说JApplet,因为没有经验。它可以满足我的问题吗?我对JFileChooser有一点了解。 – Cataclysm

+0

*“它可以满足我的问题吗?”* ...你真的*认为我会建议,如果我*不*认为是这样吗? –

+0

@安德鲁汤普森,对不起,先生!你描述了JApplet的链接,所以我对我的问题含糊不清。 – Cataclysm

回答

2

链接如果你想定制文件在浏览器中下载的方式,不能通过标准浏览器功能完成(HTML/CSS/JavaScript)的。

取决于响应中发送要么做两件事情之一在文件下载Content-Disposition HTTP标头值的浏览器:

  • 尝试解析该文件根据它的扩展,使得如果该文件它的HTML,显示它如果是xml等
  • 如果Content-Disposition设置为attachment,它将打开一个非常基本的弹出窗口,询问文件的保存位置,弹出窗口没有控制或定制可能。

如果你想在浏览器中使用更多的功能,那么你需要一个applet(或其他一些用户必须安装的插件)。

但是由于去年很大一部分浏览器中存在Java的安全问题,现在浏览器不愿意运行applets,即使用户已经安装了Java,也需要很多用户确认。

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

Applets是最近被淘汰的技术,所以在网络浏览器中保存文件的基本弹出窗口是当前最实际的解决方案。

+0

我已经更新了文件下载的答案,而不是通过在响应中设置一个标头,您可以触发当前最为默认的浏览器下载功能实用的解决方 –

+0

现在我意识到我无法从服务器上保存客户端计算机上的文件。这完全不可能。我将不得不将文件作为常规文件下载来提供,然后浏览器将提供用户选择保存文件的目录。 – Cataclysm

1

..Java(但不可以荡秋千因为我创建的Web项目)

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

+0

*“真的在Java中noob”*然后你有一个陡峭的学习曲线!请参阅[为什么CS老师应该停止教授Java小程序](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)为我的一点咆哮'在小程序上。请注意,博客文章甚至没有说明此代码需要进行数字签名的事实!实际上它确实提到了它。 –

+1

哇!今天我在我的生活中找到了一位新老师。先谢谢先生。感谢您提供有用的答案和提示。我非常感谢你。 – Cataclysm

0

您可以使用JFileChooser所使用的文件类的方法,如

File a=JFileChooser.getFile(); 

要了解更多有关文件类的JFileChooser参考下

For file class

FileChooser

+0

@san krish,第二个链接已经死了 – Cataclysm

+0

@Cataclysm谢谢我已经更新了它:) –

1

如果你给Web浏览器的命令去一个URL和响应回来:

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

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

然后,网络浏览器将检测到附件,从文件名中推断出类型,并向用户显示“保存”对话框,以允许他们决定在哪里保存它。

0

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

使用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