· 4 years ago · Apr 12, 2021, 07:06 AM
1import base64
2import logging
3import mimetypes
4import http.client as httplib
5import time
6import time
7from io import BytesIO
8import requests
9from PIL import Image
10
11import config
12
13SECRET_KEY = config.secret_key
14host = config.host
15DOMAIN = config.domain
16IMAGE_DOMAIN = config.image_domain
17PATH_UPLOAD = "".join((host, config.path_upload))
18
19def get_base64_encoded_image(image):
20 return base64.b64encode(image).decode('utf-8')
21
22def upload(filename, filedata, secret_key=SECRET_KEY, overwrite=False):
23 filedata = get_base64_encoded_image(filedata)
24
25 fields = [('secret_key', secret_key), ('filename', filename)]
26 if overwrite:
27 fields.append(('overwrite', '1'))
28 BOUNDARY = '----------ThIs_Is_tHe_bouNdaRY_$'
29 CRLF = '\r\n'
30 raw = []
31 for (key, value) in fields:
32 raw.append('--' + BOUNDARY)
33 raw.append('Content-Disposition: form-data; name="%s"' % key)
34 raw.append('')
35 raw.append(value)
36 # for (key, filename, value) in files:
37 raw.append('--' + BOUNDARY)
38 raw.append('Content-Disposition: form-data; name="filedata"; filename="%s"' % filename)
39 raw.append('Content-Type: %s' % mimetypes.guess_type(filename)[0] or
40 'application/octet-stream')
41 raw.append('')
42 raw.append(filedata)
43 raw.append('--' + BOUNDARY + '--')
44 raw.append('')
45 body = CRLF.join(raw)
46
47 content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
48 re = requests.post(PATH_UPLOAD,data=body, headers={'content-type': content_type,
49 'content-length': str(len(body))})
50 print(re)
51 # if code == 200 or code == 409:
52 # return filename
53 return False
54
55
56def save_image_storage(data, file_name):
57 # print "save: %s" % (file_name), data
58 storage_file = file_name
59 new_image = "%s/%s" % (IMAGE_DOMAIN, storage_file)
60 check = upload(storage_file, data, overwrite=True)
61 if check:
62 return new_image
63 else:
64 return None
65
66
67image = "la-cay-trang-tri-chup-anh-3.jpeg"
68storage_url = "/".join((IMAGE_DOMAIN, image))
69save_image_storage(open(image,"rb").read() , storage_url)