我是初学者,我正在开发一个应用程序,我可以使用Apache Commons File Upload向用户提供上传图像的选项。
我对应该是什么文件上传路径感到困惑,我的开发环境是windows,应用程序将部署在Linux环境中。
如果我没有指定路径,则将文件上载到eclipse安装目录
String fileName = multipartFile.getOriginalFilename();
inputStream = multipartFile.getInputStream();
outputStream = new FileOutputStream(fileName);
我在某处读取了指定java.io.tmpdir的路径,在这种情况下,它是C:\ Users \ Tushar \ AppData \ Local \ Temp \ for Windows
String filePath = System.getProperty("java.io.tmpdir");
指定路径的正确方法是什么,它可以在windows和linux上工作,我应该直接在jsp&#39中使用image标记中的路径
答案 0 :(得分:3)
我通常这样做的方法是在某些属性文件中配置路径,例如
upload.path=/opt/company/uploads
在linux上,路径正常。在Windows上,它将转换为C:/opt/company/uploads
,其中C:
是您的驱动器。
然后,您可以从fileName
属性值构建upload.path
。使用File
或Path
api
File file = new File("/opt/stuff/uploads", multipartFile.getOriginalFilename());
Path path = Paths.get("/opt/stuff/uploads", multipartFile.getOriginalFilename());
只要multipartFile.getOriginalFilename()
只返回文件名。
答案 1 :(得分:0)
您好@Tushar可以在 UNIX 或 WIN 的任何位置使用属性文件或设置/your/path/filesystem/
的路径。你可以尝试这样的东西到.properties:
#PATH
yourvariable=/your/path/filesystem/
从java源代码可以读取.properties文件
这可以在任何地方分配系统环境。
我希望能帮到你:)
答案 2 :(得分:0)
所有操作系统包括unix和win,有用户主文件夹,最好在主文件夹中指定应用程序的路径,直接存储在C:中,而opt可能会导致以后的访问问题。使用方法:
String userHome = System.getProperty( "user.home" );
并指定从家中启动的应用程序的子文件夹可能是最佳选择。
答案 3 :(得分:0)
application.properties
upload.path =/C:/your/path
MvcConfig
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/images/**")
.addResourceLocations("file://" + uploadPath + "/");
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
}