1 # -*- coding: utf-8 -*-
2 import httplib
, mimetypes
4 USER_AGENT
='Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) \
5 Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)'
7 def get_file_contents(file_name
):
9 Получаем содержание файла.
15 def get_content_type(file_name
):
16 cont_type
=mimetypes
.guess_type(file_name
)[0] or 'application/octet-stream'
18 def encode_multipart_formdata(form_vaule
, file_data
, mode
):
20 Подготовка HTTP передачи
22 BOUNDARY
= '----------'
25 # add additional form fields
26 for (key
, value
) in form_vaule
:
27 L
.append('--' + BOUNDARY
)
28 L
.append('Content-Disposition: form-data; name="%s"' % key
)
33 L
.append('--' + BOUNDARY
)
34 L
.append('Content-Disposition: form-data; name="%s"; filename="%s"' \
35 % (file_data
[0], file_data
[1]))
36 L
.append('Content-Type: %s' % get_content_type(file_data
[1]))
38 L
.append(file_data
[2])
40 L
.append('--' + BOUNDARY
+ '--')
43 content_type
= 'multipart/form-data; boundary=%s' % BOUNDARY
45 return content_type
, body
47 def send_file(file_name
, ihost
, form_vaule
, mode
):
49 send_file(file_name, ihost={'name':'','post':'','cookie':''}, form_vaule={}, mode=[True,True])
50 mode,flag = mode[0],mode[1]
51 mode = False - заливаем просто файл, если True - то заливаем по урлу.
53 flag = True - хостинг не поддерживает задивку по урлам, и поэтому обманываем его.
55 mode
,flag
= mode
[0],mode
[1]
57 if not mode
and not flag
:
58 file_data
= (ihost
['name'], file_name
, get_file_contents(file_name
))
60 elif mode
and not flag
:
61 file_data
= (ihost
['name'], file_name
, None)
62 elif not mode
and flag
:
63 from urllib
import urlopen
64 file_data
= (ihost
['name'], file_name
.split('/')[-1], urlopen(file_name
).read())
67 content_type
, body
= encode_multipart_formdata(form_vaule
, file_data
, mode
)
68 header
= httplib
.HTTPConnection(ihost
['host'])
69 header
.putrequest('POST', ihost
['post'])
70 header
.putheader('Content-Type', content_type
)
71 header
.putheader('Content-Length', str(len(body
)))
72 header
.putheader('Referer', 'http://'+ihost
['host']+'/')
73 header
.putheader('Cookie',ihost
['cookie'])
74 header
.putheader('User-Agent', USER_AGENT
)
77 #header.set_debuglevel(1)
78 return header
.getresponse()