首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在spring mvc中存储图像/文件的位置/方式

在spring mvc中存储图像/文件的位置/方式
EN

Stack Overflow用户
提问于 2015-02-07 18:56:59
回答 2查看 28.6K关注 0票数 13

我在一个使用Spring MVC和Hibernate的电子商务应用程序中工作,我需要在其中存储大量图像。

我希望将图像保存在一个文件系统上(保存在服务器上,以减少数据库的负载)。我的疑问是,我应该在我的项目中保存图像的确切位置?

正如我在一些博客中提到的那样,图片不应该保存在war文件中的文件夹中,因为这可能会在应用程序的下一个版本发布时导致问题(备份所有图片并再次手动放置它们)

请让我知道我需要保存图像的确切位置,以及如何在我们的java类中获取该文件夹路径。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-08 00:51:21

您可以创建一个将返回图像数据的控制器,并使用它在您的jsp上显示。

示例控制器:

代码语言:javascript
复制
@RequestMapping(value = "/getImage/{imageId}")
@ResponseBody
public byte[] getImage(@PathVariable long imageId, HttpServletRequest request)  {
    String rpath = request.getRealPath("/");
    rpath = rpath + "/" + imageId; // whatever path you used for storing the file
    Path path = Paths.get(rpath);
    byte[] data = Files.readAllBytes(path); 
    return data;
}

并使用以下代码进行显示:

代码语言:javascript
复制
<img src="/yourAppName/getImage/560705990000.png" alt="myImage"/>

哈!

票数 9
EN

Stack Overflow用户

发布于 2015-02-07 19:36:22

您可以在容器中存储/上传文件。使用request.getRealPath("/")访问路径。

示例:

代码语言:javascript
复制
                byte[] bytes = fileInput.getBytes(); 

                //bytes to string conversion
                fileToStr = new String(bytes, "UTF-8");
                System.out.println(fileToStr);                    
                String name=fileInput.getOriginalFilename(); 

                String ext=name.substring(name.lastIndexOf("."),name.length()); 
                fileName=""+System.currentTimeMillis()+ext; 


                String rpath=request.getRealPath("/"); //path forstoring the file
                System.out.println(rpath); 
                File file=new File(rpath,"csv"); 
                if(!file.exists()){ 
                                file.mkdirs(); 
                } 

                File temp=new File(file,fileName); 
                System.out.println("Path : "+temp); 

                FileOutputStream fos= new FileOutputStream(temp); 
                fos.write(bytes); 
                fos.close(); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28381293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档