В качестве ссылки я использую http://cloudinary.com/documentation/image_upload_api_reference.Правильный способ загрузки байтов изображения в облачный
Есть два случая, когда я хочу загрузить файлы в облачный.
- Загрузить изображение, напрямую указав ссылку на ссылку.
- Загрузите байты изображений, взяв их из разных источников.
Я мог бы решить случай 1, но имел проблемы во втором. Я вставляю свой поток кода ниже для справки.
import cloudinary
import cloudinary.uploader
from io import BytesIO
from StringIO import StringIO
def upload_image_to_cloudinary(img_tag):
logging.debug("Uploading Image to cloudinary : %s"%img_tag)
if 'src' not in img_tag.attrs:
del img_tag
return
img_src = img_tag['src']
if img_src.startswith('/blob'):
quip_client = pgquip.get_client()
blob_ids = img_src.split('/')
blob_response = quip_client.get_blob(blob_ids[2], blob_ids[3])
img_src_str = blob_response.read() # this returns str object.
# img_src = BytesIO(img_src_str)
img_src = StringIO(img_src_str)
cloudinary_response = cloudinary.uploader.upload_image(
img_src,
use_filename=True,
folder="/pagalguy/articles",
width=546,
crop="limit"
)
img_tag['src'] = cloudinary_response.metadata.get("url")
return img_tag
В случае, когда img_src
это изображение блоб str
возвращается другой апи, я передал его как file
парам упоминается в cloudinary документ в очень похожим образом, как и любой внешний URL изображения для например: https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAAIkAAAAJGRhNzJiYjY1LTUxOTctNDI4NC1hOGIwLWQ1OTVlNmZlZmVmYw.jpg
И , для проверки того, как общие потоки загрузки работают как boto для s3, я проверяю ниже код репо. Ссылается https://github.com/boto/boto/blob/develop/boto/vendored/six.py#L633 это тоже.
Журнал ошибок:
Invalid URL for upload Traceback (most recent call last): File "/base/data/home/apps/s~pagalguy-staging/namita:v1.397698162588746989/articleslib/article_util.py", line 68, in upload_images_n_publish tag = image_util.upload_image_to_cloudinary(tag) File "/base/data/home/apps/s~pagalguy-staging/namita:v1.397698162588746989/api/image_util.py", line 133, in upload_image_to_cloudinary crop="limit" File "/base/data/home/apps/s~pagalguy-staging/namita:v1.397698162588746989/libs/cloudinary/uploader.py", line 23, in upload_image result = upload(file, **options) File "/base/data/home/apps/s~pagalguy-staging/namita:v1.397698162588746989/libs/cloudinary/uploader.py", line 17, in upload return call_api("upload", params, file = file, **options) File "/base/data/home/apps/s~pagalguy-staging/namita:v1.397698162588746989/libs/cloudinary/uploader.py", line 226, in call_api raise Error(result["error"]["message"]) Error: Invalid URL for upload
Наконец, я не знаю, что правильный способ загрузить байты изображения в cloudinary.
, для которого определение "не работает"? –
пробовал пропустить 'StringIO.StringIO (img_src)' и 'io.BytesIO (img_src)', не работал. И я попробовал 'upload_image', а также' upload' definition.! –
Для написания вслух: ДЛЯ ОПРЕДЕЛЕНИЯ «НЕ РАБОТАЕТ»? «не работает» является самым бесполезным возможным описанием проблемы. Если вы надеетесь получить какую-либо помощь, пожалуйста, сообщите, что вы ожидали и что произошло точно (с полной трассировкой, если у вас есть и т. Д.). –