0

所以我在http://ninjawars.net上运行了一个网页游戏

显示外部托管的图像

我想提供不是头像的可嵌入图片(我知道并且已经在使用 gravatar 的优质服务,但这些图片不会与任何电子邮件绑定),这是因为我找到了托管您自己上传的图片图像往往是一种痛苦,可以这么说,其他人已经做得更好了。

防止外部文件大小过大

但是,这在一定程度上会影响对图像大小的控制。使用一个简单的链接,这将允许用户上传一些大文件大小,虽然它会在 css 中以一定的显示大小显示,但它可能会强制一些愚蠢的长加载时间。

一种方法:约束 url

因此,我希望一旦用户输入 url 参数,就需要对其进行一些限制,从而限制某些图像托管服务的选项。我最初的想法是需要 url 的固定部分,一个显示的表单:

[ http://flickr.com/photos/] [在此处输入您的其余照片网址] [/sizes/sq/]

因此,它将图像限制为托管在 flickr 上,以及某个可能设置 flickr 大小的 url,可能会使用一些后端 PHP 处理来删除 url 的第一部分和最后一部分的任何重复实例,所以人们可以在完整的网址中发布并让它工作。

更好的选择?

所以问题是,这是一种愚蠢的做法吗?是否已经有更好的 javascript 或 php 解决方案?我应该如何在外部托管图像的同时仍然施加一些控制?还是这种控制偏执狂并没有必要?

4

2 回答 2

1

使用 HTTP“HEAD”请求获取文件大小,无需下载。响应字段“内容长度”。在 php 或 js(ajax) 中检查它...我更喜欢 js,因为它可以消除从服务器到客户端的负载。此外,根据 HTTP 1.1,不应再使用来自一个用户代理的连接。您的服务器的许多用户可能会导致从您的服务器到图像托管服务器的许多同时连接。

于 2010-01-21T17:46:14.757 回答
1

大多数人完全不知道文件大小,所以我认为担心可能是大图像并不是偏执:他们尝试使用 4Gb 图片作为头像。

如果您获得 url,将没有通用的方法来控制图像。

您可以自己获取图像,调整大小,存储结果并提供服务,但这与上传或多或少相同......

是的,必须托管上传的图像很痛苦,但似乎是最好的解决方案。

你必须注意一些事情:

  • 限制上传的大小,这样用户就不会让你的服务阻塞
  • 删除具有意外格式的文件
  • 使用 imagemagick 或类似工具尽快调整图像大小,以避免文件占用太多空间
  • 做一些清理以避免过时的图像填满你的磁盘

需要一些工作,但这是更好的控制方式......

并且不要忘记攻击性和/或受版权保护的图像的问题,无论您的技术解决方案如何,您都将无法应对)

于 2010-01-21T17:51:58.080 回答