【问题标题】:Best Location for Uploading file [duplicate]上传文件的最佳位置[重复]
【发布时间】:2010-12-28 18:01:48
【问题描述】:

处理一些导入过程,我需要首先将文件上传到服务器上的某个位置,然后我需要从该位置选择文件以将其导入系统。 我只是想知道存储上传文件的最佳位置可能是什么。我没有什么选择

1) 可以在 tomcat 的根目录中创建一个文件夹,然后可以将上传文件放在那里,以后可以选择文件进行导入过程。

File dir = new File(System.getProperty("catalina.base"), "uploads");

这是一个不错的选择吗?上面的代码在所有环境中都能正常工作

2) 我可以在我的应用程序下创建一个上传文件夹,并可以访问它以进行文件上传,然后使用以下代码进行导入

ServletActionContext.getServletContext().getRealPath("uploads");

需要您的宝贵建议,我需要做的唯一工作是上传文件并为上传的文件运行导入过程,一旦导入成功,将文件从该文件夹中删除到其他类似处理的文件等。

【问题讨论】:

    标签: java tomcat servlets


    【解决方案1】:
    File dir = new File(System.getProperty("catalina.base"), "uploads");
    

    它不适用于没有catalina.base 属性的环境。因此,您需要在 webapp 的安装手册中正确记录它,以确保在相关服务器计算机上设置了此属性,或者寻找替代方法。


    ServletActionContext.getServletContext().getRealPath("uploads");
    

    作为永久存储,这不是一个好的选择。每当您重新部署 WAR 时,一切都会丢失。

    而是将其存储在您的 web 应用程序之外的已知且固定的路径中,并将其路径添加为 Tomcat 的 /conf/server.xml 中的 <Context>,以便它也可以在线使用。

    如果您出于某种原因不想更改 Tomcat 的 /conf/server.xml,那么您需要创建一个 servlet,它使用 FileInputStream 从磁盘读取文件并将其写入响应的 OutputStream。您可以找到here 一个基本示例。

    相关问题:

    【讨论】:

    • @BalucS 如果我按照您的建议将上下文放在 server.xml 中,我如何在我的 java 应用程序中访问此路径,因为最后我需要使用 java IO 访问此文件,以便将此传递给系统的其他部分
    • 您可以硬编码代码中的完整路径,您可以在web.xml 中配置完整路径并从servletcontext 中获取它,您可以硬编码/配置部分路径uploads 并使用getRealPath() 来揭示它,等等。
    • @BalusC 这适用于 tomcat 服务器。如果我想在 glassfish3 服务器中实现它应该做哪些更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多