我正在尝试将图像作为base64字符串或图像上传到AWS,但在上传后图像会破坏/变为黑色。
for item in os.listdir(os.path.join(app.config['UPLOAD_FOLDER'])):
if item.startswith(str(current_user.id)):
with open(os.path.join(app.config['UPLOAD_FOLDER'], item)) as thefile:
data = base64.b64encode(thefile.read())
upload_image_to_aws_from_image_v3('MYBUCKET', "userimg/", data, new_zimmer, "hauptbild", new_zimmer.stadt, new_zimmer.id)
AWS的方法:
def upload_image_to_aws_from_image_v3(bucketname, bucketpath, image_from_form, model_to_change, model_column, model_addon_for_name, model_addon_for_name_id):
s3 = boto.connect_s3(app.config['MY_AWS_ID'], app.config['MY_AWS_SECRET'], host='s3.eu-central-1.amazonaws.com')
bucket_name = bucketname
bucket = s3.get_bucket(bucket_name)
k = Key(bucket)
#file_contents = image_from_form.read()
the_filename = "zimmer-" + model_addon_for_name.lower().strip() + str(model_addon_for_name_id) + ".jpg"
filename_hauptbild = secure_filename(the_filename)
k.key = bucketpath + filename_hauptbild
k.set_contents_from_string(image_from_form)
setattr(model_to_change, model_column, filename_hauptbild)
答案 0 :(得分:0)
尝试以下操作,看看您是否获得了更好的结果:
import boto
def upload_image_to_aws_from_image_v3(bucketname, bucketpath, image_from_form, model_to_change, model_column, model_addon_for_name, model_addon_for_name_id):
s3 = boto.connect_s3(app.config['MY_AWS_ID'], app.config['MY_AWS_SECRET'], host='s3.eu-central-1.amazonaws.com')
bucket = s3.get_bucket(bucket_name)
the_filename = "zimmer-" + model_addon_for_name.lower().strip() + str(model_addon_for_name_id) + ".jpg"
filename_hauptbild = secure_filename(the_filename)
k = bucket.new_key(key_name)
k.set_contents_from_string(image_from_form)
k.set_contents_from_filename(path_to_file)
return k