我写了一个程序,要求用户提供视频文件。一旦视频由用户浏览,它就会保存在战争/内容中。我这样做没有任何问题。当我想看视频时,我使用了html的视频标签并给出了相对路径。视频非常精细,可以查看。
我使用以下代码行来解析路径。
System.setProperty("webapp.root", "C:/solution/totalsolution");
File webappDir = new File(System.getProperty("webapp.root", "./"));
File webappInfo = new File(webappDir, "war");
if(!webappInfo.exists()){
File dir = new File(webappDir, "war");
if(!dir.exists()){
if(dir.mkdir()){
webappDir = dir;
}
}
}
webappDir = webappInfo;
webappInfo = new File(webappDir, "content");
if(!webappInfo.exists()){
File dir = new File(webappDir, "content");
if(!dir.exists() && dir.mkdir()){
webappDir = dir;
}
}
webappDir = webappInfo;
if(contentDir != null){
webappInfo = new File(webappDir, contentDir);
if(!webappInfo.exists()){
File dir = new File(webappDir, contentDir);
if(!dir.exists() && dir.mkdir()){
webappDir = dir;
}
}
webappDir = webappInfo;
}
此程序在指定路径中创建新文件夹,例如"C:/solution/totalsolution/war/content/abcd/xysa.mp4"
当我显示任何资源然后我做这样的相对路径
http://localhost:8080/solution/content/abcd/xysa.mp4
到现在为止,每件事都没问题。但是当我提取war文件并将其部署到服务器中时。 然后由于系统属性中的静态位置而失败。
所以任何身体都可以说是正确的approch将数据保存到war文件夹中,然后右后卫在本地和服务器上读取它。
答案 0 :(得分:1)
不要尝试将数据保存到您的网络应用中;无法保证此目录可以从jar中写入甚至解压缩。相反,请阅读一个属性,告诉您存储在运行时保存的数据的位置。
答案 1 :(得分:1)
1)不要将它存储在war文件夹中,而是存放在一个单独的位置(可能专门为此设计)。 2)从用户获取文件时,您需要为此文件生成新的唯一名称,并将某个地方(例如DB)存储从原始文件名到新文件名的映射。然后在磁盘上以新名称存储文件。这是为了保证您的文件名是唯一的(想想如果两个用户上传具有相同名称的文件会发生什么)。