我的Java Web应用程序已部署在服务器计算机上。我有一个共享驱动器,可从客户端计算机和服务器计算机进行访问。使用以下代码,我可以在服务器计算机上打开该驱动器:
Spring Controller代码:
@RequestMapping(value = "/openAttachment", method = RequestMethod.POST)
public ResponseEntity<List<String>>
OpenFolder(@RequestParam("workflowName") String workflowName ) throws
IOException, InterruptedException {
String folderPath =Constants.workFlowAttachPath+workflowName;
if ((new File(folderPath)).exists()) {
Process p = Runtime
.getRuntime()
.exec("rundll32 url.dll,FileProtocolHandler "+folderPath);
p.waitFor();
}
List<String> msgList = new ArrayList<> ();
msgList.add(Constants.SUCCESSFUL);
return new ResponseEntity<List<String>>(msgList, HttpStatus.OK);
}
此处使用的常量为:
public static final String workFlowAttachPath="\\\\10.82.31.27\\Area20\\Attachment\\";
但是我无法从本地计算机上的本地计算机(浏览器)打开此文件夹。 这可能吗 ?如果可能的话怎么办?提前致谢。
答案 0 :(得分:1)
不,您不能那样做。如果可以将窗口和系统状态硬编码到代码中,则可以将该文件夹安装在驱动器号(例如,驱动器“ N:”)上,然后使用路径:
psf String workFlowAttachPath = "N:\\Attachment\\";
您可以使用以下方式将其安装在Windows上:
net use N: \\\\10.82.31.27\\Area20 /PERSISTENT:YES
但是我只是要耗尽那一个的内存,因此您必须检查net use
Windows命令上的文档以了解详细信息。您应该能够通过Runtime.getRuntime()。exec()调用“ net.exe”,但我建议您不要这样做。您已经在对IP进行硬编码,并且谁知道此代码中的内容,也应该注意在外部安装N:驱动器。这避免了必须从Java代码中处理net命令中的错误,这非常困难; Windows喜欢翻译其命令并可能引发许多奇怪的错误,编写代码以从Java调用Windows实用程序并了解其输出是一项不平凡的工作。