पर कोई छवि मौजूद है या नहीं, बस सोच रहा है कि मैं यह जांच सकता हूं कि यूआरएल वैध छवि के लिंक यूजेएल में है या नहीं।Django: जांचें कि कोई विशेष यूआरएल
उत्तर
यहां एक असफल तरीका है। सबसे पहले, डोमेन और बाकी को पाने के लिए यूआरएल पार्स करें।
>>> from urllib.parse import urlparse
>>> url = 'http://example.com/random/folder/path.html'
>>> parse_object = urlparse(url)
>>> parse_object.netloc
'example.com'
>>> parse_object.path
'/random/folder/path.html'
>>> parse_object.scheme
'http'
अब, सामग्री प्रकार प्राप्त करने के लिए उपर्युक्त जानकारी का उपयोग करें। Sstatic.net के बजाय parse_object.netloc
और हार्डकोडेड पथ के बजाय parse_object.path
का उपयोग करें।
>>> import httplib
>>> conn = httplib.HTTPConnection("sstatic.net")
>>> conn.request("HEAD", "/stackoverflow/img/favicon.ico")
>>> res = conn.getresponse()
>>> print res.getheaders()
[('content-length', '1150'), ('x-powered-by', 'ASP.NET'), ('accept-ranges', 'bytes'), ('last-modified', 'Mon, 02 Aug 2010 06:04:04 GMT'), ('etag', '"2187d82832cb1:0"'), ('cache-control', 'max-age=604800'), ('date', 'Sun, 12 Sep 2010 13:39:26 GMT'), ('content-type', 'image/x-icon')]
यह आपको बताता है कि यह 1150 बाइट्स की एक छवि (छवि/* माइम-प्रकार) है। यह तय करने के लिए पर्याप्त जानकारी है कि क्या आप पूर्ण संसाधन प्राप्त करना चाहते हैं।
संपादित
छोटा यूआरएल के लिए, http://goo.gl/IwruD
जो http://ubuntu.icafebusiness.com/images/ubuntugui2.jpg
को इंगित करता है, प्रतिक्रिया है कि आप प्राप्त की तरह, वहाँ एक अतिरिक्त पैरामीटर 'location'
कहा जाता है।
यहाँ मैं किस बारे में बात कर रहा हूँ है:
>>> import httplib
>>> conn = httplib.HTTPConnection("goo.gl")
>>> conn.request("HEAD", "/IwruD")
>>> res = conn.getresponse()
>>> print res.getheaders()
[('x-xss-protection', '1; mode=block'),
('x-content-type-options', 'nosniff'),
('transfer-encoding', 'chunked'),
('age', '64'),
('expires', 'Mon, 01 Jan 1990 00:00:00 GMT'),
('server', 'GSE'),
('location', 'http://ubuntu.icafebusiness.com/images/ubuntugui2.jpg'),
('pragma', 'no-cache'),
('cache-control', 'no-cache, no-store, max-age=0, must-revalidate'),
('date', 'Sat, 30 Jun 2012 08:52:15 GMT'),
('x-frame-options', 'SAMEORIGIN'),
('content-type', 'text/html; charset=UTF-8')]
प्रत्यक्ष यूआरएल में रहते हुए, आप यह नहीं मिल जाएगा।
>>> import httplib
>>> conn = httplib.HTTPConnection("ubuntu.icafebusiness.com")
>>> conn.request("HEAD", "/images/ubuntugui2.jpg")
>>> res = conn.getresponse()
>>> print res.getheaders()
[('content-length', '78603'), ('accept-ranges', 'bytes'), ('server', 'Apache'), ('last-modified', 'Sat, 16 Aug 2008 01:36:17 GMT'), ('etag', '"1fb8277-1330b-45489c3ad2640"'), ('date', 'Sat, 30 Jun 2012 08:55:46 GMT'), ('content-type', 'image/jpeg')]
आपको लगता है कि का उपयोग कर एक सरल कोड के लिए देख सकते हैं:
>>> r = res.getheaders()
>>> redirected = False
>>> for e in r:
>>> if(e[0] == 'location'):
>>> redirected = e
>>>
>>> if(redirected != False):
>>> print redirected[1]
'http://ubuntu.icafebusiness.com/images/ubuntugui2.jpg'
मेरा पायथन दुभाषिया कहता है "आयात त्रुटि: कोई मॉड्यूल पार्स नाम नहीं है"। आपकी विधि चरण 1 में विफल रही। कोई विचार? –
पाया गया, आप अभी भी पायथन 3 का उपयोग कर रहे हैं, जबकि मैं अभी भी अजगर का उपयोग कर रहा हूं 2.7 :) –
एक और संदेह है, मान लीजिए कि 'http://ubuntu.icafebusiness.com/images/ubuntugui2.jpg' यूआरएल है और मैंने इसे छोटा कर दिया google url शॉर्टनर तो अब यह 'http://goo.gl/IwruD' बन गया है.अब इस संक्षिप्त यूआरएल पर आपकी विधि काम नहीं कर रही है, यह कहती है "ResponseNotReady"। क्या कहना है? –
urllib2 का उपयोग करके इसे जांचने का एक आसान तरीका।
>>> import urllib2
>>> url = 'https://www.google.com.pk/images/srpr/logo3w.png'
>>> try:
... f = urllib2.urlopen(urllib2.Request(url))
... imageFound = True
... except:
... imageFound = False
...
>>> imageFound
True
सत्यापित करने के लिए कि यह वास्तव में एक वैध छवि है requests और PIL का उपयोग करना:
>>> import requests
>>> from PIL import Image
>>> from StringIO import StringIO
>>> r = requests.get('http://cdn.sstatic.net/stackoverflow/img/sprites.png')
>>> im = Image.open(StringIO(r.content))
>>> im
<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=238x1073 at 0x2845EA8>
यदि छवि वहां नहीं थी तो क्या होगा? क्या आपका कोड दुर्घटनाग्रस्त होगा या आपको आईएम के कुछ विशेषताओं की जांच करनी होगी? क्या आप एक बूलियन लौटने वाले फ़ंक्शन में अपना कोड अपडेट कर सकते हैं? – Radu
'r.status_code' 200 – jterrace
नहीं होगा हाँ हाँ एचटीटीपी स्टेटस कोड के अलावा, Image.open को किसी प्रकार की त्रुटि फेंकनी चाहिए जो मैं सोच रहा हूं? पीआईएल इस में बहुत मददगार नहीं है ... मैं http://effbot.org/imagingbook/image.htm#tag-Image.Image.verify पर भी देख रहा था लेकिन इसका उपयोग नहीं कर सकता कि इसका क्या उपयोग करना है। – Radu
- 1. जांचें कि कोई स्ट्रिंग एक यूआरएल है
- 2. Django: जांचें कि
- 3. जांचें कि क्या इसके यूआरएल
- 4. जांचें कि यूआरएल सी # .NET
- 5. जांचें कि सत्र कुंजी Django
- 6. जांचें कि कोई ऑब्जेक्ट
- 7. जांचें कि क्या एक यूआरएल http: // prefix
- 8. जांचें कि यूआरएल मैचों में टेम्पलेट
- 9. जांचें कि कोई चर Twig
- 10. जांचें कि कोई फ़ाइल वाइल्डकार्ड
- 11. जांचें कि कोई प्रकार इंटरफ़ेस
- 12. जांचें कि कोई संख्या पाइथन
- 13. जांचें कि कोई चर plsql
- 14. जांचें कि कोई मान LINQ
- 15. जांचें कि कोई सूची है
- 16. जांचें कि कोई फ़ाइल Yii
- 17. Django कैसे जांचें कि ऑब्जेक्ट में संपत्ति
- 18. जांचें कि कोई webservice मौजूद है
- 19. एक्सपैथ/एक्सएसएलटी: जांचें कि निम्न भाई एक विशेष नोड
- 20. जांचें कि क्या रूबी
- 21. विशेष वर्ण और यूआरएल
- 22. जावा विशेष यूआरएल पात्रों
- 23. कैसे जांचें कि सरणी 2.8 में एक विशेष मान है?
- 24. जांचें कि कोई फॉर्म इनपुट मौजूद है
- 25. जांचें कि कोई फ़ैश बैश स्क्रिप्ट
- 26. जांचें कि कोई प्रोग्राम एक पायथन लिपि
- 27. जांचें कि कोई node.js मॉड्यूल उपलब्ध है
- 28. जांचें कि कोई स्ट्रिंग एक्सएमएल स्वरूपित है
- 29. पायथन: जांचें कि कोई ऑब्जेक्ट अनुक्रम है
- 30. जांचें कि कोई पथ पूर्ण या सापेक्ष
यदि छवि एक ही पर है मशीन Django के रूप में, तो आप बस फ़ाइल को पढ़ सकते हैं और इसे मान्य कर सकते हैं। यदि नहीं, तो आपको एक आरईएसटी कॉल करना होगा और परिणाम का विश्लेषण करना होगा। – freakish
छवि Django के समान मशीन पर मौजूद नहीं है। असल में मेरे पास एक ऐसा फॉर्म है जहां उपयोगकर्ता को कुछ छवि का यूआरएल जमा करने की आवश्यकता होती है। मैं सिर्फ यह जांचना चाहता हूं कि वह यूआरएल किसी भी वास्तविक छवि से लिंक है या नहीं। –
इसे पढ़ें: http://stackoverflow.com/questions/7699796/how-do-you-get-django-to-make-a-restful-call (संभावित डुप्लिकेट)। – freakish