在哪里放置用户上传的文件?

时间:2013-01-04 02:47:57

标签: java file file-upload struts2 upload

我正在创建一个允许用户上传音频的网络应用,我的问题是我应该在哪里放置它们?我应该把它们放在Web-Content里面吗?还是在WEB-INF内? (我不考虑为这些文件使用数据库,因为大多数音频文件都很庞大)上传和存储文件的最佳做法是什么?尽可能地,当我在war文件中部署我的应用程序时,文件仍然存在,因为我将这些文件的相对文件路径存储在数据库中

3 个答案:

答案 0 :(得分:1)

将上传的文件置于任何级别的Web应用程序下绝对不是一个好主意。 我的首选是拥有配置路径的配置文件。重要的是,路径完全无法从Web根目录访问,因此无法在服务器上执行上载的文件。

 create a text file called <webapp>.properties

 StorePath=C:/temp/Storage/

此文本文件应包含在可从ResourceLoader.getResource()访问的路径下,例如classpath,WEB-INF

然后可以使用java加载该属性。

java.util.Properties props = new java.util.Properties();
java.net.URL urlx = ResourceLoader.getResource("<webapp>.properties");
props.load(urlx.openStream());
String buildVersion =props.get("StorePath").toString();

然后将文件保存到该位置。

答案 1 :(得分:0)

这取决于您所面临的情景,这些音频会用于什么?但是,将资源文件放在webapp文件夹中总是一个坏主意。您可以将它们存储在您的应用程序有权访问的单独文件夹中,或者存储在您的计算机或某些其他分布式文件系统(如HDFS)上的远程存储,甚至存储在Amazon S3等云存储产品中。

答案 2 :(得分:0)

在服务器存储位置上传文件的最佳方式(服务器文件系统中的硬盘驱动器)在服务器中创建一个文件夹并在其上传该文件。上传后将上传的文件路径放入数据库。

当用户想要显示来自数据库的文件获取文件路径并显示在你的html / jsp页面上并显示带有相应html标签的路径来处理它时。

与显示图像一样,您将图像保存在服务器存储上的目录中,其路径为db,假设其路径为www.xrv.com/images/Sunset.jpg (绝对or相对`)。

在jsp中使用<img src="www.xrv.com/images/Sunset.jpg"/>