2016-03-04 1 views
0

OK, donc j'essaie de passer à MVC. J'ai un modèle, vue et contrôleur fait, mais maintenant je veux changer la fonctionnalité de création de l'application.MVC File upload Où mettre le code

Je travaille avec des téléchargements et j'ai ce code généré par le système dans mon contrôleur.

Function Create(<Bind(Include:="Id,Course,Category,SubCategory,FileName,FileType,UploadedBy,DateUploaded")> ByVal acAsset As acAsset) As ActionResult 
     If ModelState.IsValid Then 
      db.Assets.Add(acAsset) 
      db.SaveChanges() 
      Return RedirectToAction("Index") 
     End If 
     Return View(acAsset) 
    End Function 

Maintenant, je veux changer cela pour que ce sera

  1. Vérifier l'existence d'un dossier pour le cours, la catégorie et sous catégorie. Si ce dossier n'est pas là, il doit être créé.
  2. Téléchargez le fichier sélectionné par une boîte de sélection de fichier.
  3. Affichez le nom des fichiers sur le db.

Le code n'est pas nécessairement le problème, je ne sais pas où je devrais mettre dans le contrôleur?

J'ai lu ceci article mais je ne parle pas de la publication DB.

Merci d'avance.

Répondre

1

Vous ajoutez simplement votre code dans le contrôleur que vous voulez frapper sur le bouton cliquez sur

votre rasoir Afficher le code

@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     <input type="file" name="file" /> 
     <input type="submit" name="Submit" id="Submit" value="Upload" /> 
    } 

code C#

[HttpPost] 
    public ActionResult Upload(HttpPostedFileBase file) 
    { 
     if (file != null && file.ContentLength > 0) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
      var path = Path.Combine(Server.MapPath("~/Images/"), fileName); 
      file.SaveAs(path); 
     } 

     return RedirectToAction("UploadDocument"); 
    } 
} 
0

Dans votre vue

<input type="file" name="file"> 

Dans votre contrôleur

public actionresult(HttpPostedFileBase file) 
{ 
string filename = Path.GetFileName(file.FileName); 
    string contentType = file.ContentType; 
    using (Stream fs = file.InputStream) 
    { 
     using (BinaryReader br = new BinaryReader(fs)) 
     { 
      byte[] bytes = br.ReadBytes((Int32)fs.Length); 
     } 
    } 
//Data Context Code here 
    tableName.File= bytes; 
    db.add(tableName); 
    db.SaveChanges(); 
}