我正在开发一个使用java servlets和JSP构建的项目。系统部署在tomcat服务器上。 在这里,我需要从URL下载某些.wav文件。所以我写了一个代码来下载文件。但问题是在本地机器上我可以将文件路径作为我的“C:/”,并且它成功下载,但我不知道当我在服务器上部署它时要给出的路径。 我尝试获取上下文路径并将其添加到文件路径但它没有下载。我也看不到日志上的任何错误。
此外,由于.war文件已部署,我不知道如何访问我的服务器上的文件夹(甚至获取正确的路径)。
我搜索了很多,但所有解决方案都显示了如何将文件从URL下载到本地计算机,但没有显示如何从URL下载文件到Tomcat服务器。
请帮帮我
答案 0 :(得分:1)
尝试在服务器中创建一个环境变量,该变量将保存您文件的根路径。在您的代码中使用System.getenv
访问环境变量,并将其用作路径的根。
还有可能在战争中添加文件并直接访问它们(例如http://www.example.com/mywavfiles.wav
,但这会增加你的战争规模,通常不是你理解的东西。
答案 1 :(得分:0)
如果要跨应用程序部署持久保存文件,请在服务器上定义运行servlet容器的用户(可能是“tomcat”)具有写访问权限的目录。
您不应将文件下载到“上下文路径”,因为它被视为Web应用程序的只读资源,仅包含java类和其他(已编译)资源。 (你可能不能,因为文件系统权限否认你)
如果是出于临时目的,请使用System.getProperty("java.io.tmpdir")
返回的值作为创建临时文件的基本目录。
如果需要从目录名和文件名构造路径,请不要手动放置斜杠和反斜杠,而是使用System.getproperty("file.separator")
当发现自己创建了大量低级功能时,请考虑使用例如Commons IO而不是重新发明轮子。