0

画像アップロードフォームがあります

<% 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 では何らかの理由で次のチェックに合格しないことがわかっています。

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 タイプが失われているようですが、これだけが問題ではない可能性があります。Chrome での HttpPostedFileBase パラメータの何が問題なのですか?どうすれば修正できますか?

ご清聴ありがとうございました。ご協力いただきありがとうございます。

4

2 に答える 2

1

hanselmansメソッドを使用するだけで、クロムで完璧に機能します。

于 2010-02-17T17:31:19.573 に答える
0

ファイルを mvc にアップロードするコードの一部をデバッグしたところHttpPostedFileBase、Chrome と同じように Firefox から正確な MIME 文字列を取得しました。それぞれ「image/jpeg」と「image/gif」です。したがって、ブラウザがファイルの種類を解釈することに問題はないと思います。

この回答を見てください。「HttpPostedFileBase」データのアップロードと入力に関する多くのコードが含まれています。動けなくなるかもしれません。

于 2010-02-17T17:54:46.857 に答える