通过Django直接将CSV文件上传到S3

时间:2020-07-24 11:46:25

标签: django amazon-s3 boto3 botocore python-django-storages

我正在创建一个django应用程序,该应用程序已连接到Amazon S3以保存用户上传文件。这是使用django-storages完成的。

在应用过程中,将生成CSV文件。我可以将文件保存在本地。但是如何将文件直接上传到S3而又不将其保存在本地并将文件S3 URL同时保存在数据库中?

我尝试使用StringIO,但是会产生TypeError:必须在进行哈希处理之前对Unicode对象进行编码

任何建议/解决方案将不胜感激!

1 个答案:

答案 0 :(得分:1)

// Install boto3 first
import boto3

s3 = boto3.client('s3',
                  aws_access_key_id=AWS_ACCESS_KEY_ID,
                  aws_secret_access_key=AWS_SECRET_ACCESS_KEY, )

// ...... Get your file or open file ......
file_name = your_file_here
// ......

s3.upload_file(file_name, AWS_STORAGE_BUCKET_NAME,
               path_where_you_want_to_store))

// Ex: s3.upload_file(file_name, AWS_STORAGE_BUCKET_NAME,
//                           '%s/%s' % ('media/user/file', file_name))