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

标签 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\\";      

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

最佳答案

不,你不能那样做。如果您同意将 Windows 和系统状态硬编码到代码中,则可以将该文件夹安装到驱动器盘符上,例如驱动器“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 实用程序并理解它们的输出是一项不简单的工作。

关于java - 我们可以使用 Java Web 应用程序在客户端计算机上打开共享驱动器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52384920/

相关文章:

php - 调用未定义的方法 JController::getInstance()

java - Math.log 背后的算法 - Java

javascript - 如何将Json数组从ajax发送到spring Controller ?

html - html 中文本对齐面临困难

spring - Spring Boot 中何时需要 Thymeleaf 表达式分隔符?

spring - 使用 Spring 3.2.0 验证

java - 如何使用 Spring RestTemplate 发送多部分/表单数据?

java - 构建所有字符串,其中每个数字都是一组字符

java - 在 Java 中解析 JSON 的问题

java - android java中关于Thread life和AudioTrack的困惑