ASP.NET MVC semble correctement lier automatiquement le champ d'entrée de fichier de la forme HTML et HttpPostedFileBase. D'autre part, il ne peut pas lier du champ de saisie de fichier au tableau byte..J'ai essayé et il émet une exception - quelque chose à propos de ne pas être en mesure de convertir en Base64. Je n'avais que la propriété byte array sur mes classes Model précédemment car plus tard j'en ai besoin pour effectuer la sérialisation de l'objet en fichier XML.Le modèle lie HttpPostedFileBase, puis stocke le fichier dans la banque de données
Maintenant, je suis venu avec cette solution de contournement et il fonctionne très bien, mais je ne sais pas si ce sera ok:
[DataContract]
public class Section : BaseContentObject
{
...
[DataMember]
public byte[] ImageBytes;
private HttpPostedFileBase _imageFile;
public HttpPostedFileBase ImageFile
{
get { return _imageFile; }
set
{
_imageFile = value;
if (value.ContentLength > 0)
{
byte[] buffer = new byte[value.ContentLength];
value.InputStream.Read(buffer, 0, value.ContentLength);
ImageBytes = buffer;
ImageType = value.ContentType;
}
}
}
[DataMember]
public string ImageType { get; set; }
}
Vous avez partiellement raison, mais je travaille sur mes actions pour essayer de se débarrasser de FormCollection et HttpPostedFileBase, en les remplaçant par des classes Model fortement typées. – mare
@mare Je pense que vous pourriez trouver de meilleurs moyens de le faire. J'ai mis à jour ma réponse. – bzlm