Java 保存图像(文件上传)的正确方法是什么
我正在尝试将图像保存到我的web应用程序目录之外。 我已经在共享服务器上托管了我的应用程序。所以我得到了一个根文件夹来部署我的项目。我怎样才能在我的webapp之外建立一个目录,这样我就可以上传我的图片了。如果我重新部署我的应用程序,那么这些图像将不会丢失 我得到了根空间,并将我所有的构建文件夹粘贴在上面。如果我重新部署我的应用程序,我希望上传文件夹不会丢失Java 保存图像(文件上传)的正确方法是什么,java,tomcat,web-applications,file-upload,Java,Tomcat,Web Applications,File Upload,我正在尝试将图像保存到我的web应用程序目录之外。 我已经在共享服务器上托管了我的应用程序。所以我得到了一个根文件夹来部署我的项目。我怎样才能在我的webapp之外建立一个目录,这样我就可以上传我的图片了。如果我重新部署我的应用程序,那么这些图像将不会丢失 我得到了根空间,并将我所有的构建文件夹粘贴在上面。如果我重新部署我的应用程序,我希望上传文件夹不会丢失 fileSystemPath= "/files"; try{ File destFile
fileSystemPath= "/files";
try{
File destFile = new File(fileSystemPath, thempicFileName);
FileUtils.copyFile(thempic, destFile);
String path=fileSystemPath+"/"+thempicFileName;
使用上面的代码,在D驱动器(我当前的工作目录)中创建一个文件夹,在我的db文件中像/files/smg.png
一样存储,如果我试图从jsp页面使用
访问该图像,那么我将无法显示该图像
项目和文件的确切位置。。
使用上述代码,我的图像将保存在D:\myprojectDir\files
中,我的项目位置是D:\myprojectDir\projectfolder
该项目正在STRUTS2中开发
请建议我以何种方式编写代码,以便在jsp上接收图像。您无法从浏览器直接访问您的Web应用程序(甚至有些文件夹受到保护)。想象一下,如果你可以的话,它会是一个安全漏洞 不过,您可以编写一个“代理”servlet/JSP,从文件系统读取文件并将其返回到浏览器。您可能需要确保正确访问tomcat用户,如果您正在使用它,请使用selinux为其提供访问权限
但是,请不要在没有充分理由和所有检查的情况下这样做,因为您只访问了您想要访问的路径(因此,请检查没有人向您传递像
。/../mysecretaccountpasswords.txt
)。您可以将图像存储在服务器应用程序可访问的任何位置
您必须打开文件并使用一个特殊的servlet将流发送到响应,该servlet包含您放在jsp中的url
这是Spring的一个示例:
File file = new File(...);
Resource resource = new FileSystemResource( file );
HttpHeaders headers = new HttpHeaders();
headers.setContentType( MediaType.IMAGE_JPEG );
return new ResponseEntity<Resource>( resource, headers,
HttpStatus.OK );
File File=新文件(…);
资源资源=新文件系统资源(文件);
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.IMAGE\u JPEG);
返回新的响应属性(资源、标题、,
HttpStatus.OK);
编辑:您在Google中搜索了很多示例:“将图像流式传输到http响应”。然后您在Google中搜索了很多示例:“将图像流式传输到http响应”。@francadaval这正是我的问题,您想打开此文件夹进行http访问吗?您必须知道jsp不能访问您的系统文件或文件夹。jsp为web浏览器设置URL(),以向web服务器请求图像。所以,或者你把图像放在WebContent(静态图像)中,或者你可以像我在回答中说的那样制作。@francadaval我只想把我的图像放在任何地方,这样如果我重新部署我的项目,它就不应该被删除,我可以在任何jsp页面中显示这些图像。怎么做?@francadaval这是你说的吗