1

ファイルのサイズを変更する ASP.NET MVC 2 (.NET 4.0 フレームワークの下) で単純なコントローラー アクションを作成しています。

私はこのようなコントローラを持っています(私はそれを少し減らしました):

public ActionResult GetFile(int fileId, string fileSource) {
    FileInfo file = repo.FindFileById(fileId);

    //do some resizing

    string mimeType = string.Empty;
    switch(file.Extension) {
        case ".jpg":
            mimeType = "image/jpg";
            break;
        //some more stuff
        default:
            mimeType = "text/png";
            break;
    }

    return File(file.FullName, mimeType);
}

ファイル システムでは正常に保存され、サイズ変更されたファイルを表示できますが、ブラウザではファイルがレンダリングされません。

Charles を使用して応答を検査したところ、HTTP ステータス 200 が返されましたが、画像は表示されません。

画像を保存して表示しようとすると、Windows 画像ビューアーで画像が破損していると表示されます。

ZIP (サイズ変更なし;)) も試してみましたが、破損した ZIP ファイルが返されます。

私は何か間違ったことをしているだけだと確信していますが、私の人生ではそれを見つけることはできません.

編集

Cassini と IIS 7.5 (Windows 7) の両方でテストしたところ、両方のインスタンスで問題が発生しました。

4

4 に答える 4

1

消去法で進めることをお勧めします。簡単なアクションと動作する jpeg 画像から始めます。

public ActionResult Index()
{
    return File("test.jpg", "image/jpeg");
}

これが機能しない場合は、他の問題が発生している可能性があります (ブラウザのキャッシュをクリアしてみてください)。test.jpgそれが機能する場合は、問題が見つかるまで、サイズを変更する前に、持っているものに置き換えます。

于 2010-08-28T09:54:35.080 に答える
0

jpeg の正しい MIME タイプは、image/jpg ではなく、image/jpeg です。これにより、問題が発生します。

これが破損の原因である可能性が高いため、サイズ変更コードも投稿する必要があります。罰金を読んで書き戻すとどうなりますか?

于 2010-08-28T13:42:55.020 に答える
0

この問題は、サイトで実行されている Http Compression モジュールが原因であることが判明しました。このモジュールは、画像の応答を変換しようとして、画像を破損しています。

于 2010-08-29T05:01:43.377 に答える