5

我必须扫描上传的文件是否有病毒,并在 Spring 3 MVC 应用程序中向用户显示适当的消息。

目前我已经使用 Spring MVC 3 配置了文件上传。在控制器中收到文件后,我必须检查是否存在病毒,如果文件感染了任何病毒,则应用程序应该拒绝该文件并向用户显示特定消息。

关于如何在 Java Spring MVC 应用程序中实现这一点的任何想法。我使用的 spring 版本是 3.2.4。

在这个方向上的任何帮助/指针将不胜感激。

多谢。

4

1 回答 1

9

首先,您必须检查您安装的防病毒软件提供了什么样的 API。

如果提供了任何 Java API(如 AVG API),那么您必须按如下方式使用它:

public void scanFile(byte[] fileBytes, String fileName)
   throws IOException, Exception {
   if (scan) {
      AVClient avc = new AVClient(avServer, avPort, avMode);
      if (avc.scanfile(fileName, fileBytes) == -1) {
         throw new VirusException("WARNING: A virus was detected in
            your attachment: " + fileName + "<br>Please scan
            your system with the latest antivirus software with
            updated virus definitions and try again.");
      }
   }
}

如果安装的杀毒软件没有提供Java API,那么您仍然可以使用命令行调用它,如下所示:

String[] commands =  new String[5];
                  commands[0] = "cmd";
                  commands[1] = "/c";
                  commands[2] = "C:\\Program Files\\AVG\\AVG10\\avgscanx.exe";
                  commands[3] = "/scan=" + filename;
                  commands[4] = "/report=" + virusoutput;


                 Runtime rt = Runtime.getRuntime();
                 Process proc = rt.exec(commands);

有一篇有趣的文章供您参考:Implementing an Anti-Virus File Scan in JEE Applications

希望这对您有所帮助。

于 2014-03-26T05:53:57.043 回答