我们可以使用Java Web应用程序在客户端计算机上打开共享驱动器吗?

时间:2018-09-18 10:51:33

标签: java spring web

我的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\\";      

但是我无法从本地计算机上的本地计算机(浏览器)打开此文件夹。 这可能吗 ?如果可能的话怎么办?提前致谢。

1 个答案:

答案 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实用程序并了解其输出是一项不平凡的工作。