1

我刚刚开始使用 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 回答 1

3

SO这里通常不赞成三个部分的问题,但无论如何我都会咬一口:)

  1. 如果您允许基于身份验证访问图像,那么您需要使用 ASP.NET 的 URL 授权功能。ImageResizer 支持 URL 授权规则。如果您只是不希望源文件可用,并且想要强制它们调整大小或加水印,请阅读有关如何实现此类任意规则的文档
  2. 您可以使用 将图像路径重写为您的心脏内容Config.Current.Rewrite,这就像前面提到的 PostRewrite 事件一样。请记住,您以后必须将其全部记在脑海中。
  3. 图片扩展是个好东西。不要和他们打架。他们让服务器找出正确的 mime 类型来发送并帮助错误的浏览器从相关错误中恢复。它们可以防止多个平台上的问题并使“另存为”对话框正常工作。它们也显着提高了服务器效率,因为处理逻辑不需要等待很长时间。由于 IIS/ASP.NET 模块系统的设计,这一点尤为重要。
于 2012-07-02T19:43:34.097 回答