【发布时间】:2013-11-11 14:53:13
【问题描述】:
我想将上传的文件保存在 tomcat 目录中,之后我想让一些用户访问下载该文件。 现在文件保存在 eclipse 目录中,或者保存在 eclipse 的磁盘上,但从不在 tomcat 目录中。我不知道如何访问 tomcat 的路径,我不想给: C:\tomcat7\webapps\blabla\,我想得到tomcat所在的路径。
上传控制器:
@Controller
@RequestMapping(value = "/upload")
public class UploadController
{
@RequestMapping(method = RequestMethod.GET)
public String getUploadForm(Model model)
{
model.addAttribute(new UploadItem());
return "upload/uploadForm";
}
@RequestMapping(method = RequestMethod.POST)
public String create(UploadItem uploadItem, BindingResult result)
{
if (result.hasErrors())
{
for(ObjectError error : result.getAllErrors())
{
System.err.println("Error: " + error.getCode() + " - " + error.getDefaultMessage());
}
return "upload/uploadForm";
}
// Some type of file processing...
String fileNameToCreate = "/"+uploadItem.getFileData().getOriginalFilename();
File file;
try {
file = new File(fileNameToCreate);
FileUtils.writeByteArrayToFile(file, uploadItem.getFileData().getBytes());
} catch (Throwable e) {
e.printStackTrace();
}
System.err.println("-------------------------------------------");
System.err.println("Test upload: " + uploadItem.getName());
System.err.println("Test upload: " + uploadItem.getFileData().getOriginalFilename());
System.err.println("-------------------------------------------");
return "redirect:/app/";
}
}
我希望有人有一些想法来获取从这个控制器到 tomcat 的路径,或者我可以如何修复它
【问题讨论】:
-
您通常不会将文件存储在 Tomcat 目录中。一般来说,您将拥有某种文件存储,例如 Amazon S3。我认为任何将用户上传的文件存储到 Tomcat 中的方法听起来都是个坏主意。
-
@david99world 说了什么。 :)
-
我加倍@david99world。您的应用程序将不可移植。想象一下,它被部署到系统上的 tomcat 上,其中 tomcat 文件夹出于安全目的是只读的。您需要一种方法来配置存储文件的位置。此参数(文件夹路径)是一个典型的部署参数,您可以将其作为环境变量或系统属性传递。
-
比你的建议,将文件保存在数据库中?或者如果不是数据库,最好保存文件,而不是让具有某些权限的用户下载这些文件
标签: java eclipse spring tomcat spring-mvc