SpringMVC图像上传和检索JSP页面中的文件

SpringMVC图像上传和检索JSP页面中的文件,spring,jsp,spring-mvc,file-upload,apache-commons-fileupload,Spring,Jsp,Spring Mvc,File Upload,Apache Commons Fileupload,我正在创建一个SpringMVCWeb应用程序,在这个应用程序中,我从用户上传图像,并将它们保存在我驱动器(本地笔记本电脑)的项目文件夹中,我能够成功地检索它们 要保存图像,我使用以下代码: MultipartFile productImage = product.getProductImage(); int Id= productService.addProduct(product); path= Paths.get("C:/Users/oms/i

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

要保存图像,我使用以下代码:

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/" />
图像已成功保存。现在要检索它们,我使用以下代码:

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/" />
和除getRealPAth()之外的所有
null


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

从JSP无法从服务器的文件系统检索文件,因此有两个选项:

  • 将图像存储在可以使用url访问的文件夹中(例如,在Apache htdocs文件夹中)

  • Sotre将映像解压缩到服务器的文件系统中,并调用servlet来获取它


您可以编写代码将图像保存在apache htdocs文件夹中,或者如何将其保存在服务器的文件系统中?因为我不知道。但在我当地的系统中,它工作得很完美。但我使用的是完整路径,这就是问题所在。。。。那么你有什么解决方案请分享:)要使用Apache服务器(或任何其他服务器),你必须首先安装和配置它。您可能需要使用servlet来获取图像的内容。关于如何做到这一点,有很多例子。例如:我没有将图像保存到数据库中。我将它们用作文件系统。好吧,我来举个例子。我只是想知道我能把它们保存在服务器文件夹里吗?因为默认路径是webapps根文件夹,我无法将图像保存到webapps文件夹:(首先,您需要服务器中的路径来存储数据。如果您不是服务器的所有者,请要求提供一个路径。除非您的服务器提供商告诉您这样做,否则不要使用C:/或D:/之类的字母。您的路径可能类似于/。您应该使用此路径来写入和读取图像