загрузить файл на S3 без создания временного локального файла в django / python - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь сохранить подпись в базе данных 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'})
    

, хотя этот метод работает, но я хочу загрузить напрямую, не создавая дополнительный файл и не записывая для него дополнительный код.Но я не могу понять, как это сделать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...