Wie eine Datei nach dem hochladen auf App_Data/Uploads in MVC 3 mit Razor?
Ich bin neu in der mvc-und ich bin stecken mit einem problem. Ich suchte überall für eine Antwort und konnte ich nicht finden, aber ich bin mir sehr sicher, dass etwas ausgelassen mir. Das problem ist, dass ich nicht wissen, wie Sie Zugang zu einer Datei, nachdem ich es hochladen zu App_Data-Ordner. Ich benutze den gleichen code, den ich gefunden habe auf alle Foren:
Für meine Ansicht ich dieses
@using (Html.BeginForm("Index", "Home", FormMethod.Post,
new { enctype="multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="submit" />
}
Für meinen controller benutze ich dieses
public class HomeController : Controller
{
//This action renders the form
public ActionResult Index()
{
return View();
}
//This action handles the form POST and the upload
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
//Verify that the user selected a file
if (file != null && file.ContentLength > 0)
{
//extract only the fielname
var fileName = Path.GetFileName(file.FileName);
//store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
//redirect back to the index action to show the form once again
return RedirectToAction("Index");
}
}
Mein Modell ist
public class FileDescription
{
public int FileDescriptionId { get; set; }
public string Name { get; set; }
public string WebPath { get; set; }
public long Size { get; set; }
public DateTime DateCreated { get; set; }
}
Das Ding ist, ich möchte eine Datei hochladen, die Datenbank, und dann die WebPath der link zu meiner Datei. Ich hoffe ich habe mich klar genug. Jede Hilfe wäre wirklich zu schätzen.
Dank
Ich möchte, dass meine Datenbank nur den Pfad zu der Datei, nicht die Datei selbst.
Könntest du definieren, was du meinst mit "Dateien anzeigen", tun, die Sie wollen, um es als link, oder möchten Sie den aktuellen Inhalt der Datei?
Könntest du definieren, was du meinst mit "Dateien anzeigen", tun, die Sie wollen, um es als link, oder möchten Sie den aktuellen Inhalt der Datei?
InformationsquelleAutor Robert | 2011-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den Zugriff auf Ihre Datei-server-Seite (also Zugriff auf die Inhalte von ASP.NET Anwendung) - einfach
Server.MapPath("~/App_Data/uploads/<yourFileName>")
um den absoluten Pfad (zB. C:/inetpub/wwwroot/MyApp/Add_Data/MyFile.txt).Inhalt der App_Data-Ordner nicht direkt zugänglich sind von URL aus Gründen der Sicherheit. Alle configs, Datenbanken werden dort gespeichert, so ist es ziemlich offensichtlich, warum. Wenn Sie Ihre hochgeladene Datei Zugriff via URL - upload in einen anderen Ordner.
Ich denke, Sie müssen die Datei, um Zugriff via web. In einem solchen Fall die einfachste Lösung würde sein, um einen Dateinamen (oder den vollständigen absoluten Pfad wie am Anfang erwähnt), um Ihre Datei in eine Datenbank, und erstellen Sie eine controller-action, die würde, nehmen Sie einen Dateinamen und ein return den Inhalt der Datei.
InformationsquelleAutor Piotr Szmyd
Falls es jemand hilft, hier ist ein einfaches Beispiel für ein PDF:
InformationsquelleAutor Adrian Carr
Sollten Sie einen Generic handler zum Zugriff auf die Dateien. IMO speichern von Bildern /Dateien in den Ordner App_Data ist die beste Praxis, da es nicht dazu dient die Dateien standardmäßig.
Natürlich hängt es von Ihren Bedürfnissen. Wenn Sie don ' T care überhaupt, wer Zugriff auf die Bilder, dann einfach laden Sie Sie auf einen Ordner außerhalb des app_data-Ordner 🙂
Es hängt alles von Ihren Bedürfnissen.
InformationsquelleAutor Moulde