【问题标题】:Spring MVC Image Upload and Retrieving File in JSP PageJSP页面中的Spring MVC图像上传和检索文件
【发布时间】:2016-10-25 17:47:11
【问题描述】:

我正在创建一个 Spring MVC Web 应用程序,在该应用程序中我从用户上传图像并将它们保存在我的驱动器(本地笔记本电脑)的项目文件夹中,并且我能够成功检索它们。

要保存我使用代码的图像:

MultipartFile productImage = product.getProductImage();
               int Id= productService.addProduct(product);
        path= Paths.get("C:/Users/oms/images/"+Id+".jpg");
        //System.out.println(path.toString());
        if(productImage!=null && !productImage.isEmpty()){
            try {
                productImage.transferTo(new File(path.toString()));
            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException("Product Image Saving Failed ",e);

            }
        }

图像已成功保存。现在要检索它们,我正在使用代码:

<mvc:resources mapping="/images/**" location="file:///C:/Users/oms/images/" />

我能够成功找回它们。

但是这个应用程序在本地运行良好,但是如果我在云中部署 war 文件它将无法运行,因为没有 C drive 并且没有用户。我尝试使用相对路径将图像保存在项目文件夹中,但都失败了。

我试过了:

 System.out.println("request.getContextPath()"+request.getContextPath());
  System.out.println("request.getPathInfo()"+request.getPathInfo());
 System.out.println("request.getPathTranslated()"+request.getPathTranslated());
 System.out.println("request.getServletPath()"+request.getServletPath());
 System.out.println("servletContext.getRealPath()"+servletContext.getRealPath("/"));

以及所有null except the getRealPAth()

servletContext.getRealPath()C:\Users\apache-tomcat-8.0.24\webapps\ROOT\

显然我无法将它们保存在 webapps 文件夹中,因为重新启动服务器后所有图像都将消失(删除)。如何获得将图像保存在项目文件夹中的相对路径,以便在云中部署此项目时可以正常工作?

【问题讨论】:

    标签: spring jsp spring-mvc file-upload apache-commons-fileupload


    【解决方案1】:

    从 JSP 中,您无法从服务器的文件系统中检索文件,因此您有两种选择:

    • 将图像存储在您可以通过 url 访问的文件夹中(例如在 Apache htdocs 文件夹中)

    • 将图像导入服务器的文件系统并调用 servlet 来获取它。

    【讨论】:

    • 能否请您编写代码以将图像保存在 apache htdocs 文件夹中,或者如何将其保存在服务器的文件系统中?因为我不知道。但是在我的本地系统中,它运行良好。但我使用的是完整路径,这就是问题所在......所以你有什么解决方案请分享:)
    • 要使用 Apache 服务器(或任何其他服务器),您必须首先安装和配置它。可能您需要的是使用 servlet 来获取图像的内容。有很多例子可以说明如何做到这一点。例如:stackoverflow.com/questions/2340406/…
    • 我没有将图像保存到数据库中。我将它们用作文件系统。好吧,我会看看例子。只是我想知道我可以将它们保存在服务器文件夹中吗?因为默认路径是 webapps 根文件夹,我无法将图像保存到 webapps 文件夹中:(
    • 首先您需要在服务器中设置一个路径来存储数据。如果您不是服务器的所有者,请索要一个。不要使用像 C:/ 或 D:/ 这样的字母,除非您的服务器提供商告诉您这样做。您的路径可能类似于 //。您应该使用此路径来写入和读取图像
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2015-08-01
    相关资源
    最近更新 更多