如何在Java中上传时使用防病毒软件扫描文件?[已关闭]

2022-09-03 14:21:14

我正在开发一个需要文件上传的应用程序,它还需要使用服务器上可用的防病毒软件扫描文件。

我听说赛门铁克提供的用于应用程序服务器的 abt APIS。

Situatuion就像是,我需要在未来的不同地方部署应用程序。因此,我正在考虑将配置文件放在我将要获取可用防病毒软件及其路径的位置。

我想在服务器上使用任何可用的防病毒软件,然后使用命令行,我想传递文件名和结果。

我在传递文件和检索结果时感到困惑。

可能吗?


答案 1

使用以下代码。

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);

通信线将是您更好的选择。然后读取日志文件以解决问题。


答案 2

我刚刚用谷歌搜索了一篇有趣的文章,看看这里

要在 Java 中实施病毒文件扫描,需要使用第三方包。出于本文的目的,我将使用 Java API 附带的赛门铁克扫描引擎 (SSE) 包。此包是一个用作 TCP/IP 服务器的应用程序,它具有编程接口,使 Java 应用程序能够合并对内容扫描技术的支持。在本文中,我使用了赛门铁克扫描引擎5.1,它可作为Unix或Windows安装提供。

快速参考:

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.");
      }
   }
}

然后

catch (Exception ex) {
   logger.error(ex);
   if (ex instanceof VirusException) {
      // do something here
   }
   else {
      // there was some other error – handle it
   }
}

推荐