2024-05-17 04:02:23 发布
网友
我在做一个网站。我想从服务器上检查用户提交的链接是否是一个实际存在的图像。
看看imghdr
下面是一些示例代码:
import imghdr import httplib import cStringIO conn = httplib.HTTPConnection('www.ovguide.com', timeout=60) path = '/img/global/ovg_logo.png' conn.request('GET', path) r1 = conn.getresponse() image_file_obj = cStringIO.StringIO(r1.read()) what_type = imghdr.what(image_file_obj) print what_type
这应该返回“png”。如果不是图像,则不返回
希望能有帮助!
-布莱克
这是一种快速的方法:
它并不真正验证这是一个真正的图像文件,它只是根据文件扩展名猜测,然后检查url是否存在。如果您真的需要验证从url返回的数据实际上是一个图像(出于安全原因),那么这个解决方案将不起作用。
import mimetypes, urllib2 def is_url_image(url): mimetype,encoding = mimetypes.guess_type(url) return (mimetype and mimetype.startswith('image')) def check_url(url): """Returns True if the url returns a response code between 200-300, otherwise return False. """ try: headers = { "Range": "bytes=0-10", "User-Agent": "MyTestAgent", "Accept": "*/*" } req = urllib2.Request(url, headers=headers) response = urllib2.urlopen(req) return response.code in range(200, 209) except Exception: return False def is_image_and_ready(url): return is_url_image(url) and check_url(url)
这是适用于我的应用程序的最佳方法,也是基于以前的评论:
def is_url_image(image_url): image_formats = ("image/png", "image/jpeg", "image/jpg") r = requests.head(image_url) if r.headers["content-type"] in image_formats: return True return False
看看imghdr
下面是一些示例代码:
这应该返回“png”。如果不是图像,则不返回
希望能有帮助!
-布莱克
这是一种快速的方法:
它并不真正验证这是一个真正的图像文件,它只是根据文件扩展名猜测,然后检查url是否存在。如果您真的需要验证从url返回的数据实际上是一个图像(出于安全原因),那么这个解决方案将不起作用。
这是适用于我的应用程序的最佳方法,也是基于以前的评论:
相关问题 更多 >
编程相关推荐