0 votes

Le téléchargement d'images en ASP.Net MVC échoue dans Google Chrome

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.

0voto

Al Katawazi Points 2077

Il suffit d'utiliser hanselmans méthode fonctionne parfaitement en chrome.

0voto

cottsak Points 5490

Je viens de déboguer une partie de mon code qui télécharge des fichiers vers mvc et j'obtiens la chaîne MIME exacte à partir de la fonction HttpPostedFileBase dans Firefox comme dans Chrome : "image/jpeg" et "image/gif" respectivement. Je ne pense donc pas qu'il y ait un problème d'interprétation du type de fichier par le navigateur.

Jetez un coup d'œil à cette réponse . Il contient une grande partie de mon code concernant le téléchargement et la saisie des données 'HttpPostedFileBase'. Cela pourrait vous aider à sortir de l'impasse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X