C# 使用MVC将文件发送到VirusTotal
我是一名学生,正在尝试另一个迷你项目,用户可以将CSV文件上传到web服务器。但在创建另一个程序来执行该文件之前,我想将该文件发送给virustotal,让它检查病毒 我尝试过,但出现了一个错误:“无法从'string'转换为'System.IO.FileInfo'” 这是我的密码: 控制器C# 使用MVC将文件发送到VirusTotal,c#,asp.net-mvc,virus-scanning,C#,Asp.net Mvc,Virus Scanning,我是一名学生,正在尝试另一个迷你项目,用户可以将CSV文件上传到web服务器。但在创建另一个程序来执行该文件之前,我想将该文件发送给virustotal,让它检查病毒 我尝试过,但出现了一个错误:“无法从'string'转换为'System.IO.FileInfo'” 这是我的密码: 控制器 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.M
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using VirusTotalNET;
namespace Testing_1.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
public ActionResult Upload(HttpPostedFileBase file)
{
string filename = file.FileName;
VirusTotal vtObj = new VirusTotal("%API KEY%");
string resID = vtObj.ScanFile(file.FileName);
string path = Server.MapPath("~/CSV/" + file.FileName);
file.SaveAs(path);
ViewBag.Path = path;
return View();
}
}
}
我在这一行得到了错误:stringresid=vtObj.ScanFile(file.FileName)
索引
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="File" id="file"/>
<input type="submit" value="Upload" />
}
@{
ViewBag.Title=“Index”;
}
指数
@使用(Html.BeginForm(“Upload”、“Home”、FormMethod.Post、new{enctype=“multipart/formdata”}))
{
}
上传
@{
ViewBag.Title = "Upload";
}
<h2>Uploaded: @ViewBag.Path</h2>
@{
ViewBag.Title=“上传”;
}
上传:@ViewBag.Path
请帮助我,谢谢你如果我没有错,你是从你的代码中使用这个库的 然后,如果查看他们的文档,您可能会注意到ScanFile方法需要FileInfo类型的对象,并返回ScanResults类型的对象。所以这里不以任何方式包括字符串 因此,您需要将文件保存在文件系统中的某个位置,然后创建FileInfo对象
public ActionResult Upload(HttpPostedFileBase file)
{
string filename = Server.MapPath("~/CSV/" + file.FileName);
file.SaveAs(filename);
FileInfo fi = new FileInfo(filename);
VirusTotal vtObj = new VirusTotal("%API KEY%");
ScanResults result = vtObj.ScanFile(fi);
.. ??? what to do if this is a virus ????
ViewBag.Path = filename;
return View();
}
现在,这可能会对服务器上运行的任何防病毒程序造成问题。在运行VirusTotal扫描之前保存它可能会触发已安装的防病毒软件的操作。因此,您可能应该将一个临时文件夹排除在防病毒配置之外,将文件保存在那里,然后(成功扫描后)将文件移动到正确的目标文件夹(或在出现问题时从临时文件夹中删除该文件)。如果我是正确的,您正在使用代码中的此库 然后,如果查看他们的文档,您可能会注意到ScanFile方法需要FileInfo类型的对象,并返回ScanResults类型的对象。所以这里不以任何方式包括字符串 因此,您需要将文件保存在文件系统中的某个位置,然后创建FileInfo对象
public ActionResult Upload(HttpPostedFileBase file)
{
string filename = Server.MapPath("~/CSV/" + file.FileName);
file.SaveAs(filename);
FileInfo fi = new FileInfo(filename);
VirusTotal vtObj = new VirusTotal("%API KEY%");
ScanResults result = vtObj.ScanFile(fi);
.. ??? what to do if this is a virus ????
ViewBag.Path = filename;
return View();
}
现在,这可能会对服务器上运行的任何防病毒程序造成问题。在运行VirusTotal扫描之前保存它可能会触发已安装的防病毒软件的操作。因此,您可能应该将一个临时文件夹排除在防病毒配置之外,将文件保存在那里,然后(成功扫描后)将文件移动到正确的目标文件夹(或者在出现问题时,从临时文件夹中删除该文件).我认为您需要查看的文档和api以在迷你项目中实现上载功能。我认为您需要查看的文档和api以在迷你项目中实现上载功能。您需要先保存文件,然后创建一个
FileInfo
对象(FileInfo FileInfo=new FileInfo)(pathToSavedFile);
然后将fileInfo
传递给ScanFile()
方法。您需要先保存文件,然后创建fileInfo
对象(fileInfo fileInfo=newfileinfo(pathToSavedFile);
然后将fileInfo
传递给ScanFile()
method。是的,我在开始之前就这样做了。因为.NET是Virustotalys的第三方,所以我在开始之前就这样做了。因为.NET是Virustotaly的第三方,所以我还没有想到这一点。我正在为一个安全模块做这个项目。我仍然不知道如何将保存的文件移动到另一个文件夹。但我在implement中遇到了另一个错误ing virustotal。我还没有想到那么远。我正在为一个安全模块做这个项目。我仍然不知道如何将保存的文件移动到另一个文件夹。但是我在实现virustotal时遇到了另一个错误。