如何设置自定义ImageResizer网址?

时间:2012-07-02 19:18:32

标签: asp.net-mvc-3 imageresizer

我刚刚开始使用ImageResizer而且我仍然坚持看似完全基本的问题:

  1. 我有一个上传器,用于将图像放入不能通过HTTP直接访问的目录中。 (如果我只是将图像放在/images/myimage.jpg,那么任何人都可以通过询问来访问它,而我想通过缩略图,水印等限制访问。所以我想把它放在/offlimits/myimage.jpg,但能够在/public/images/myimage.jpg处提供。
  2. 我真的不想将所有图像转储到同一个offlimits文件夹中,因为将大量文件放在一个文件夹中会使Windows不满意。但我也不想暴露该子目录结构的细节,那么我在哪里将映射放在面向公众的URL和实际的图像位置之间呢?
  3. 最常见的是,我根本不想要图片扩展,因此我想说/public/image_id?width=100...并将此地图设为/offlimits/sub1/sub2/sub3/image_id.jpg
  4. 有人可以建议如何设置吗?

1 个答案:

答案 0 :(得分:3)

这里有三个问题通常不赞成,但无论如何我都会咬人:)

  1. 如果您允许基于身份验证访问图像,则需要使用ASP.NET的URL授权功能。 ImageResizer支持URL授权规则。如果您只是不希望源文件可用,并希望强制它们调整大小或加水印,read the docs on how to implement arbitrary rules like this
  2. 您可以使用Config.Current.Rewrite将图像路径重写为心脏内容,其效果与PostRewrite事件mentioned earlier相同。记住你以后必须把它全部直接放在脑后。
  3. 图片扩展是好事。不要打他们。他们让服务器找出正确的mime类型发送并帮助错误的浏览器从相关的错误中恢复。它们可以防止多个平台出现问题并使“另存为”对话框起作用。它们也显着提高了服务器效率,因为处理逻辑没有等待很长时间。由于IIS / ASP.NET模块系统的设计,这尤其相关。