J'ai un formulaire de téléchargement d'images
<% using (Html.BeginForm("PictureValidateAndSave", "UserGallery", new {}, FormMethod.Post, new { enctype = "multipart/form-data"})) { %>
<table>
<tr>
<td> Album Name: </td>
<td> <%= Html.DropDownList("albumList") %></td>
</tr>
<tr>
<td> File Location: </td>
<td> <input type="file" name="picture" accept="image/gif, image/jpeg" /> </td>
<tr>
<tr>
<td> Picture name: </td>
<td> <input name="pictureName" style="width: 147px;"/> </td>
</tr>
</table>
<p> <input type="submit" value="Save" /> </p>
<% } %>
Cela renvoie à l'action
public ActionResult PictureValidateAndSave(long albumList, HttpPostedFileBase picture, string pictureName)
Le code fonctionne dans tous les navigateurs sauf Google Chrome. Mon IDE est Visual Studio 2k8, et je n'ai pas trouvé comment déboguer sur Google Chrome avec lui, cependant, je lance des messages d'erreur, et je sais que pour une raison quelconque sous chrome, la vérification suivante ne passe pas :
string mimeType = picture.ContentType;
// Check for the correct mimeType to define the extension
switch (mimeType)
{
case "image/pjpeg":
mimeType = ".jpeg";
break;
case "image/png":
mimeType = ".png";
break;
case "image/x-png":
mimeType = ".png";
break;
case "image/gif":
mimeType = ".gif";
// Conversion to image
Image gifImage = Image.FromStream(picture.InputStream);
FrameDimension dimension = new FrameDimension(gifImage.FrameDimensionsList[0]);
int frameCount = gifImage.GetFrameCount(dimension);
// Reject if its an animated gif
if (frameCount > 1)
{
return RedirectToAction("UploadPicture", new { error = 3 });
}
break;
default:
return RedirectToAction("UploadPicture", new { error = 1 });
}
Donc apparemment, sous Chrome, l'image du paramètre HttpPostedFileBase n'est pas encodée correctement et perd son mime type, cependant, ce n'est peut-être pas le seul problème. Qu'est-ce qui ne va pas avec le paramètre HttpPostedFileBase sous Chrome, et comment puis-je le corriger ?
Merci de votre attention, et merci d'avance pour toute aide.