Не удается загрузить изображение ASP.Net MVC в Google Chrome - PullRequest
0 голосов
/ 10 февраля 2010

У меня есть форма для загрузки изображений

<% 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>
<% } %>

Отвечает за действие

public ActionResult PictureValidateAndSave(long albumList, HttpPostedFileBase picture, string pictureName)

Код работает во всех браузерах, кроме Google Chrome. Моя IDE - это Visual Studio 2k8, и я не понял, как отлаживать в Google Chrome, однако я выдаю сообщения об ошибках и знаю, что по какой-то причине в Chrome следующая проверка не проходит: 1007 *

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 });
}

Таким образом, очевидно, что в Chrome изображение параметра HttpPostedFileBase неправильно закодировано и теряет тип mime, однако, это может быть не единственной проблемой. Что совершенно не так с параметром HttpPostedFileBase в Chrome, и как я могу это исправить?

Спасибо за внимание и заранее благодарим за любую помощь.

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Просто используйте hanselmans метод , отлично работает в Chrome.

0 голосов
/ 17 февраля 2010

Я только что отладил часть своего кода, который загружает файлы в mvc, и я получаю точную строку MIME из HttpPostedFileBase в Firefox, как я делаю в Chrome: «image / jpeg» и «image / gif» соответственно. Поэтому я не думаю, что есть проблема с браузером, интерпретирующим тип файла.

Взгляните на этот ответ . В нем много моего кода, касающегося загрузки и ввода данных «HttpPostedFileBase». Это может привести к тому, что вы застрянете.

...