如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]
Posted
技术标签:
【中文标题】如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]【英文标题】:How to implement virus scan on file upload in a Spring 3 MVC application [closed] 【发布时间】:2014-05-04 08:28:22 【问题描述】:我必须对上传的文件进行病毒扫描,并在 Spring 3 MVC 应用程序中向用户显示适当的消息。
目前我已经使用 Spring MVC 3 配置了文件上传。一旦在控制器中接收到文件,我必须检查是否存在病毒,如果文件感染了任何病毒,那么应用程序应该拒绝该文件并向用户显示具体消息。
关于如何在 Java Spring MVC 应用程序中实现这一点的任何想法。我使用的 spring 版本是 3.2.4。
我们将不胜感激任何有关此方向的帮助/指示。
非常感谢。
【问题讨论】:
嘿@Raptor 到目前为止,文件上传模块正在工作。我不知道如何在控制器级别扫描这些文件,这就是为什么我需要指针以便我可以开始使用它。我还没有开始,因为我的想法不多了。 【参考方案1】:首先,您必须检查您安装的防病毒软件提供了什么样的 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
希望对你有所帮助。
【讨论】:
您能否提供指向 AVG API 的链接?谢谢你的指点。 同意我在任何地方都找不到这个 api 文档??? 如果可以按照方法2如何跟踪病毒扫描的状态?.通过杀毒UI? @Shishir Kumar 是那个 api 给出关于扫描文件状态的响应吗?以上是关于如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Roo 2.0 我找不到 web.xml 那么如何配置 Spring MVC
如何将 Sitemesh 3 与 Spring MVC 3 集成?