将文件上传到S3而不在django / python中创建临时本地文件

时间:2019-01-20 04:09:18

标签: python django amazon-s3

我正在尝试将签名保存在s3数据库中。

  • 1-所以,首先我得到了编码为base64格式的签名图像。
  • 2-然后我从其余字符串中拆分base64标记,然后对其进行解码并将其保存到变量中。
  • 3-然后创建一个文件名。
  • 4-然后打开该文件并在其中写入字符串。此过程将在我的项目中创建一个本地文件。然后我将该文件上传到S3并将其删除。

    class SaveSignature(View):
    def post(self,request):
        config = GetConfig().config(request)
        tub = config['tub']
        CLOUD_FRONT_URL = config['CLOUD_FRONT_URL']
    
        host_ = "https://"
        user_id = request.session.get('user_id')
    
    
        image_data = request.POST.get('d')
    
        format, imgstr = image_data.split(';base64,')
        ext = format.split('/')[-1]
        data = base64.b64decode(imgstr)
        file_name = str(user_id)+"_signature" +"."+ ext
    
        user_signature = "{}/Signature/{}".format(user_id,file_name)
        sign_url = host_ + CLOUD_FRONT_URL + user_signature
    
        with open('static/user_signature/'+file_name, 'wb') as f:
            f.write(data)
    
        s3.meta.client.upload_file('static/user_signature/'+file_name,BUCKET, user_signature, ExtraArgs={'ACL':'public-read'})
    

尽管此方法有效,但是我想直接上传而不创建额外的文件并为此编写额外的代码。但是我不知道该怎么做!

0 个答案:

没有答案