IDとサーバーにアップロードされた画像のファイル名の間のマッピングをデータベースに保持します。
これは、ディスク上の実際のファイル名ではなくIDを使用してHTMLの画像を参照する必要があるためです(画像が置き換えられた場合、新しい画像への参照を置き換えるロジックを作成するのは困難です)。
したがって、私が見ている解決策は、IDに基づいて仮想イメージパスを取得し、このURLにリダイレクトするハンドラーを用意することです。これにより、ImageResizer.netが引き続き機能するようになります。
public class Image : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
int id;
if (int.TryParse((string)context.Request.QueryString["id"], out id))
{
string path = ... // get filename from database by id and append any other query params used by imageresizer.net
context.Response.Redirect(path);
}
else
{
// return error response
}
}
}
画像の参照:
<img src="/Image.ashx?id=1&w=100" />
私の質問は、私はこれを正しく行っているのかということです。クライアントでのキャッシュなどの問題について考えています。また、リダイレクトを使用して追加のリクエストを実行します(ただし、これは私が今心配していることの中で最も少ないものです)。