2017-11-23 17 views
0
  1. 私はdjangoテンプレートからviews.pyの関数に送信した画像ファイルをcloudwhileにアップロードしようとしています
  2. ファイルはrequest.FILESである

    [ 'イメージ']DjangoでInMemoryUploadedFileのアップロードをcloudlog.uploader.upload()を使用して1.11に変換する方法

     cloudinary.config(
          cloud_name="p*****", 
          api_key="33************", 
          api_secret="4***-S***_o*********" 
         ) 
         img_obj = request.FILES['image'] 
         cloudinary_response = cloudinary.uploader.upload(img_obj) 
         image_url = cloudinary_response['url'] 
    
  3. 印刷img_objは、画像(のように: "tree.jpg")の名前を与えるドキュメントがある

  4. cloudinaryアップロードfoとしてはhttps://cloudinary.com/documentation/image_upload_api_reference#upload

  5. です。img_objのタイプはInMemoryUploadedFileです。今、それをbase64に変換する方法がありますか、それで私はアップロードすることができます。

  6. または他の解決策?

+0

[エンコードBase64でジャンゴのImageFieldストリーム]の可能な重複(https://stackoverflow.com/questions/36179539/encode-base64-django-imagefield-stream) –

答えて

0

あなたはいくつかのオプションがあります:あなたが直接それをアップロードしてみてくださいできるよう

  1. img_obj.fileは、実際のファイルオブジェクトです。
  2. InMemoryUploadedFileFileのサブクラスであるため、標準のpythonファイルio関数を使用してファイルをopen(mode='rb')とすることもできます。
  3. それとも、img_obj.read()

を試すことができます私は2番目のオプションのために行くだろう:

import base64 

with img_obj.open("rb") as image_file: 
    encoded_string = base64.b64encode(image_file.read()) 
+0

これは問題を解決するはずです。しかし残念ながらこれを行うと例外が発生します__exit__ – Apon

+0

バックトレースを表示できますか?まさに例外は何ですか? – dirkgroten

関連する問題