从S3获取数据在html表示,如何将base64编码的字符串上传到s3并在python中访问html文件中的url...

^{}为我工作

完整代码import boto

from boto.s3.connection import S3Connection

from boto.s3.key import Key

# import urllib

# from io import BytesIO

AWS_ACCESS_KEY = os.environ.get('AWS_ACCESS_KEY')

AWS_SECRET_KEY = os.environ.get('AWS_SECRET_KEY')

AWS_BUCKET_NAME = os.environ.get('S3_BUCKET_NAME')

import base64

我是在django视图中这样做的,所以我读取base64数据,并在此时将其分配给一个名为cover_art的变量。

然后我把它保存到S3,就像这样:connection = boto.connect_s3()

bucket = connection.get_bucket(AWS_BUCKET_NAME)

cloudfile = Key(bucket)

path = "images/" + me.username + "/" + "cover-image-001.jpg"

cloudfile.key = path

cloudfile.set_contents_from_string(base64.b64decode(cover_art))

cloudfile.set_metadata('Content-Type', 'image/jpeg') # from https://stackoverflow.com/a/22730676 and https://stackoverflow.com/questions/16156062/using-amazon-s3-boto-library-how-can-i-get-the-url-of-a-saved-key

cloudfile.set_acl('public-read')

附加注释

几个小时前,我对base64编码还不太熟悉,所以我甚至不知道应该如何使用boto。万一你给博托喂错了东西,这里有一个关于我使用的变量“封面艺术”的额外说明。

假设数据是这样的:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFR...

如果我想像这样显示图片,我需要把它放到网页上

然而,在这里的python代码中,我提供给boto的部分是没有介绍的。所以我的变量是这样的:cover_art = "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFR..."

我实际上是从一张看起来像

(如果您也在使用表单,并希望在提交时在浏览器中检查此表单,请尝试使用javascript获取表单,然后显示它,例如alert(theForm.innerHTML))

注意,这里没有滑稽的角色,看起来不像ÿØÿà...

(希望你能从我使用的语言中看出我是n00b!)

顺便说一句,我之所以发这个帖子是因为某些原因,我无法让set_contents_from_file(file_obj)方法为我工作。。。不过,谢谢你的回复,很高兴看到这种方法对你有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Python从Http获取数据,保存在本地CSV文件,再将本地文件传到S3,使用Copy命令加载到redshift的表的实现步骤: 1. 导入所需的库和模块,如requests、csv、boto3等。 2. 使用requests库发送HTTP请求,获取数据。 3. 将获取到的数据写入本地CSV文件,使用csv库的writer对象,将数据以CSV格式写入文件。 4. 使用boto3库连接S3,将本地CSV文件传到指定的S3。 5. 使用psycopg2库连接Redshift数据库,执行Copy命令,将S3上的CSV文件加载到对应的表。 以下是示例代码: ```python import requests import csv import boto3 import psycopg2 # 获取数据 url = 'http://example.com/data.csv' response = requests.get(url) data = response.text # 将数据写入CSV文件 with open('data.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) for row in data: writer.writerow(row) # 将本地CSV文件传到S3 s3 = boto3.client('s3') bucket_name = 'my-bucket' file_name = 'data.csv' s3.upload_file(file_name, bucket_name, file_name) # 将S3上的CSV文件加载到Redshift表 conn = psycopg2.connect(host='my-redshift-host', port=5439, user='my-user', password='my-password', database='my-db') cursor = conn.cursor() table_name = 'my-table' copy_query = f"COPY {table_name} FROM 's3://{bucket_name}/{file_name}' CSV DELIMITER ',' IGNOREHEADER 1" cursor.execute(copy_query) conn.commit() cursor.close() conn.close() ``` 需要注意的是,以上只是一个简单的示例,实际应用还需要考虑异常处理、数据清洗、数据类型转换等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值