2010-11-02 16 views
0

Actuellement, je télécharge des fichiers PDF et des images de mon application Web MVC vers une base de données de serveur SQL. Cela fonctionne parfaitement, mais je veux maintenant être en mesure de télécharger des fichiers ePub.Télécharger un fichier ePub à partir de l'application ASP.NET MVC

J'ai essayé de le faire avec le même Uploader dans l'espoir vain que cela fonctionnerait, mais cela est l'erreur que je reçois:

SqlException était non gérée par l'utilisateur du code .

« La requête paramétrées '(@FileContent varbinary (max) , @ MimeType nvarchar (4000), @ FileName' attend le paramètre '@MimeType', qui n'a pas été fourni.

Voici également le code de mon contrôleur qui gère les téléchargements:

public ActionResult Index() 
{ 

    foreach (string upload in Request.Files) 
    { 
     if (!Request.Files[upload].HasFile1()) continue; 

     string mimeType = Request.Files[upload].ContentType; 
     Stream fileStream = Request.Files[upload].InputStream; 
     string fileName = Path.GetFileName(Request.Files[upload].FileName); 
     int fileLength = Request.Files[upload].ContentLength; 
     byte[] fileData = new byte[fileLength]; 
     fileStream.Read(fileData, 0, fileLength); 

     const string connect = @"Server=localhost;Database=Images;user id=taraw; password=****;"; 
     using (var conn = new SqlConnection(connect)) 
     { 
      var qry = "INSERT INTO FileStore (FileContent, MimeType, FileName) VALUES (@FileContent, @MimeType, @FileName)"; 
      var cmd = new SqlCommand(qry, conn); 
      cmd.Parameters.AddWithValue("@FileContent", fileData); 
      cmd.Parameters.AddWithValue("@MimeType", mimeType); 
      cmd.Parameters.AddWithValue("@FileName", fileName); 
      conn.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
    } 

    return View(); 
} 

Je sais que l'erreur est assez explicite quant à ce que le problème est, je ne suis pas sûr comment modifier le code pour lui permettre de acce pt Formats de fichier ePub.

Toute aide serait grandement apprécié :)

+0

Sur une note de côté, itérer 'Request.Files' est pas la façon dont ASP.NET MVC pour le faire. Vous devez utiliser les fonctionnalités de liaison de modèle intégrées qui gèrent les téléchargements de fichiers. Sinon, vous rencontrerez des problèmes de portabilité et de testabilité. – bzlm

+0

Merci bzlm, je vais prendre note de cela. J'ai suivi cela à partir d'un tutoriel, mais je me rends compte qu'il y a beaucoup de place pour l'amélioration. – 109221793

+0

Les tutoriels sur asp.net/mvc sont super. Je suppose que celui que vous avez utilisé n'est pas de là. :) http://www.asp.net/mvc/tutorials/getting-started-with-mvc-part1 – bzlm

Répondre

0

Nous avons découvert que le type mime d'un fichier epub est application/epub + zip. Spécifié cela dans mon application plutôt que de l'attendre de l'utilisateur et cela semble avoir fait l'affaire. Le fichier est en train de télécharger et de télécharger sans aucun problème.

Merci à tous ceux qui ont commenté :)

0

Ajouter ePUB dans la liste des types Mime de votre serveur en tant que type connu, je suppose que mime-type va nulle en db, c'est pourquoi cette erreur se ressuscitera.

+0

Salut Mazhar! Merci pour la réponse. Actuellement, je travaille localement sur mon ordinateur portable. Savez-vous comment configurer les paramètres de Visual Studio pour accepter ePub en tant que type MIME? – 109221793

+0

@Mazhar Dans le code, le type mime est fourni par le client dans 'Request.Files [upload] .ContentType'. Votre suggestion nécessiterait un refactoring majeur. – bzlm

+0

@Tara Le problème est que le type mime n'est pas fourni par le client, ou que le fichier téléchargé est cassé ou manque d'informations d'une autre manière. Vous ne devez pas compter sur les clients pour fournir le type mime, car cela est susceptible de varier en fonction du navigateur. – bzlm