1
我们一直在为正在上传到我们系统的文件实施病毒扫描程序 - 这是一个C#web应用程序,我们使用nClam插件与之交谈一个ClamAV server。在一个非常基本的设置(copied from the nClam help),它看起来像这样使用nClam和ClamAV在C#中使用日语字符病毒扫描文件
string filePath = "C:\\test\\jp TEST 昨夜のコンサート.txt";
var clam = new ClamClient("localhost", 3310);
var scanResult = clam.ScanFileOnServer(filePath); //any file you would like!
Console.WriteLine("Japan test");
switch (scanResult.Result)
{
case ClamScanResults.Clean:
Console.WriteLine("The file is clean!");
break;
case ClamScanResults.VirusDetected:
Console.WriteLine("Virus Found!");
Console.WriteLine("Virus name: {0}", scanResult.InfectedFiles.First().VirusName);
break;
case ClamScanResults.Error:
Console.WriteLine("Woah an error occured! Error: {0}", scanResult.RawResult);
break;
}
现在,当我尝试运行此,我总是会得到一个错误,从扫描后面 - 文件本身只是用一些随机的文本文件我得到的错误是“没有这样的文件或目录错误”
如果我运行ClamAV控制台命令来扫描文件夹中的文件,它似乎工作正常。我认为这是一个解码路径的问题,但我已经尝试过各种编码方案,但似乎并不奏效。
内nClam方法,还有一些解析文件路径为命令ClamAV的服务器
var commandText = String.Format("z{0}\0", command);
var commandBytes = Encoding.UTF8.GetBytes(commandText);
难道这是影响日文字符的代码?
如果您尝试从程序中迭代目录中的文件名,会发生什么情况?你看到他们期望的文件吗?如果是这样,'String.Equals'是否与你的观察一致?你能用这个文件名自己做一个File.ReadAllBytes吗? –
@PatrickHuizinga标准的C#应用程序没有问题看到文件和读取字节。只有当我传递到clam应用程序的路径时,它才会导致问题。 – loxdog