如何使用python上传包含图像的表单?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用python上传包含图像的表单?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3283字,纯文字阅读大概需要5分钟。
内容图文
![如何使用python上传包含图像的表单?](/upload/InfoBanner/zyjiaocheng/777/1d13674a3a594c7e80b8b75f6b09fcc9.jpg)
我这样做很麻烦……
您可能希望得到与http://i.joyton.com:2010相同的结果
使用此图像.和其他参数保持默认值.
def search_img(item, image_name):
try:
f = open(image_name, 'rb')
img = f.read()
print type(img)
except IOError, e:
print 'fail to open %s' % image_name
print e
return None
ts = str(time.time())
m = md5.new('testsearch_by_image' + item)
m.update(ts)
m.update('0123456789')
sign = m.hexdigest()
params = urllib.urlencode( {
'item': item,
'app_key': 'test',
'cmd':'search_by_image',
'sign':sign,
'img_file':img,
'extra':'',
'time_stamp':ts,
})
headers = {'Content-type': 'application/x-www-form-urlencode',
'Accept': 'text/plain'}
conn = httplib.HTTPConnection('i.joyton.com', 2010)
conn.request('POST', '', params, headers)
response = conn.getresponse()
print response.status, response.reason
print response.read()
conn.close()
return response.read()
if __name__ == '__main__':
search_img('book', 'f:\\book_001.jpg')
在浏览器中一切都很完美,但我的脚本却没有.有时脚本会返回正确的结果;有时它会得到其他书籍,有时它什么都没有.当它获得其他书籍时,这些书籍最近经常被其他人搜索.
解决方法:
以下是您修改的代码,用于执行multipart / form-data.虽然这不起作用,但当我在我的PC上测试你的URL时,它可能需要一些黑客攻击(可能是标志不正确或某些东西),然后才能让它运行起来.
import mimetypes
import string
import random
import time
import md5
import httplib
def upload(fields,files):
boundaryChars = list(string.lowercase) + list(string.uppercase) + [str(x) for x in range(10)] + ['_'*10]
random.shuffle(boundaryChars)
boundary = '----------RaNdOm_crAPP'+''.join(boundaryChars[:20])
CRLF = '\r\n'
elem = []
for key in fields:
elem.append('--' + boundary)
elem.append('Content-Disposition: form-data; name="%s"' % key)
elem.append('')
elem.append(fields[key])
for (key, filename,value) in files:
elem.append('--' + boundary)
elem.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
elem.append('Content-Type: %s' % mimetypes.guess_type(filename)[0] or 'application/octet-stream')
elem.append('')
elem.append(value)
elem.append('--' + boundary + '--')
elem.append('')
body = CRLF.join(elem)
content_type = 'multipart/form-data; boundary=%s' % boundary
return content_type, body
def search_img(item, image_name):
try:
f = open(image_name, 'rb')
img = f.read()
except IOError, e:
print 'fail to open %s' % image_name
print e
return None
ts = str(time.time())
m = md5.new('testsearch_by_image' + item)
m.update(ts)
m.update('0123456789')
sign = m.hexdigest()
#params = urllib.urlencode( )
contentType,body = upload({
'item': item,
'app_key': 'test',
'cmd':'search_by_image',
'sign':sign,
#'img_file':img,
'extra':'',
'time_stamp':ts,
},
[('img_file', image_name, img)]
)
headers = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Content-type': contentType,
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5',
'Host':'i.joyton.com:2010',
'Origin':'http://i.joyton.com:2010',
'Referer':'http://i.joyton.com:2010/'
}
#print c
#print body
conn = httplib.HTTPConnection('i.joyton.com', 2010)
conn.request('POST', '/', body, headers)
response = conn.getresponse()
print response.status, response.reason
print response.read()
conn.close()
return response.read()
if __name__ == '__main__':
search_img('book', 'iMgXS.jpg') #the same image.
内容总结
以上是互联网集市为您收集整理的如何使用python上传包含图像的表单?全部内容,希望文章能够帮你解决如何使用python上传包含图像的表单?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。