我正在尝试将图片保存在我的网络应用目录之外。 我在共享上托管了我的应用程序。所以我有一个根文件夹来部署我的项目。我怎样才能在我的webapp之外创建一个目录,以便我可以上传我的图像。如果我重新部署我的应用程序,那么这些图像不会丢失。
例如。我有根空间,我粘贴了我的所有构建文件夹。如果我重新部署我的应用程序,我希望上传文件夹不会丢失。
fileSystemPath= "/files";
try{
File destFile = new File(fileSystemPath, thempicFileName);
FileUtils.copyFile(thempic, destFile);
String path=fileSystemPath+"/"+thempicFileName;
使用上面的代码,文件夹在D盘中创建(我当前的工作目录),在我的db文件中存储类似/files/smg.png
如果我尝试使用来自我的jsp页面的<img src="/files/smg.png"/>
然后我没有确定要显示的图像。
项目和文件完全的位置..
使用上面的代码,我的图片保存在D:\myprojectDir\files
,我的项目位置为D:\myprojectDir\projectfolder
这个项目正在STRUTS2中开发
请建议我以哪种方式编写代码,以便我可以在jsp上接收我的图像。
答案 0 :(得分:0)
您无法直接从浏览器访问您的webapp的任何其他内容(甚至某些文件夹也受到保护)。想象一下,如果可能的话,那就是安全漏洞。
您可以编写一个“代理”servlet / JSP,它从文件系统中读取文件并将其返回给浏览器。您可能需要确保正确访问您的tomcat用户,并在使用时使用selinux进行访问。
但请不要在没有充分理由的情况下执行此操作,并且所有检查都只是访问您打算使用的路径(因此,请检查是否有人通过了../../mySecrectAccountPasswords.txt
这样的文件。)< / p>
答案 1 :(得分:0)
您可以将图像存储在可从服务器应用程序访问的任何位置。
你必须打开文件并使用你在jsp中放入的特定servlet将流发送到响应。
这是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 );
已编辑:您在Google上搜索了大量示例:“将图片流式传输到http响应”。