【问题标题】:tomcat path when saving file in spring mvc在spring mvc中保存文件时的tomcat路径
【发布时间】: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


【解决方案1】:

您可以使用以下方法获取您的 tomcat 文件夹:

System.getProperty("catalina.base");

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多