2016-07-01 9 views
0

Ich bin ein Student, der ein anderes Mini-Projekt ausprobiert, in dem der Benutzer eine CSV-Datei auf den Webserver hochladen kann. Aber bevor ich ein anderes Programm erstellen kann, um die Datei auszuführen, möchte ich die Datei an virustotal senden, damit sie nach Viren sucht.Datei an VirusTotal mit MVC senden

-Controller

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(); 
    } 
    } 
} 
:

Ich habe versucht, aber ich habe einen Fehler: meine Codes ist

Here "aus 'string' auf 'System.IO.FileInfo' nicht konvertieren"

Ich habe den Fehler in dieser Zeile: string resID = vtObj.ScanFile (file.FileName);

Index

@{ 
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" /> 
} 

hochladen

@{ 
ViewBag.Title = "Upload"; 
} 

<h2>Uploaded: @ViewBag.Path</h2> 

Bitte helfen Sie mir Danke

+0

Sie müssen zuerst die Datei speichern, dann ein 'FileInfo'-Objekt erstellen (' FileInfo fileInfo = neue FileInfo (pathToSavedFile); 'und dann' fileInfo' an die 'ScanFile()' Methode übergeben. –

Antwort

1

Wenn ich richtig bin Sie diese Bibliothek aus dem Code verwenden VirusTotal.NET

Wenn Sie dann ihre Dokumentation betrachten, können Sie feststellen, dass die ScanFile-Methode ein Objekt vom Typ FileInfo erfordert und ein Objekt vom Typ ScanResults zurückgibt. So sind Strings hier in keiner Weise enthalten.

Als solche müssen Sie Ihre Datei irgendwo in Ihrem Dateisystem speichern und dann ein Fileinfo-Objekt erstellen

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

Jetzt ist dieses ein Problem mit einem Antivirus-Programm darstellen könnten auf dem Server ausgeführt wird. Wenn Sie die Datei vor dem VirusTotal-Scan speichern, kann dies zu einer Aktion Ihres installierten Antivirenprogramms führen. Vielleicht sollten Sie einen temporären Ordner von Ihrer Antivirus-Konfiguration ausschließen, die Datei dort speichern und dann (nach einem erfolgreichen Scan) die Datei in den richtigen Zielordner verschieben (oder im Falle eines Problems die Datei aus dem temporären Ordner löschen).

+0

Ich habe nicht gedacht so weit noch. Ich mache dieses Projekt für ein Sicherheitsmodul. Ich weiß noch nicht, wie man eine gespeicherte Datei in einen anderen Ordner verschiebt. Aber ich habe einen anderen Fehler bei der Implementierung von virustotal. –

1

Ich denke, Sie müssen das Dokument und API von virus total anzeigen, um die Upload-Funktion in Ihrem Mini-Projekt zu implementieren.

+0

Ja, ich tat so, bevor ich anfing .NET ist eine dritte Partei für virustotal –