使用 PyImgur 上传上传的图像而不保存到临时文件

Upload an uploaded image using PyImgur without saving to a temporary file

我想将已上传到我的 Flask 应用程序的图像上传到 Imgur。目前,我将上传的文件保存到一个临时文件,然后将文件名传递给 upload_image。有没有更简单的方法避免临时文件?

def upload_image():
    file = request.files['file']
    filename = secure_filename(file.filename)
    target_path = os.path.join(UPLOAD_FOLDER, filename)
    file.save(target_path)
    im = pyimgur.Imgur(IMGUR_CLIENT_ID)
    uploaded_image = im.upload_image(target_path, title=filename)
    os.remove(target_path)
    return uploaded_image.link

PyImgur only supports passing a filenameupload_image。如果它支持传递一个文件对象,你可以将上传的文件直接传递给它。

您可以使用 PyImgur 客户端,但自己构建请求。除了直接使用上传的文件外,只需执行 upload_image 内部执行的操作即可。

from base64 import b64encode

data = b64encode(request.files['file'].read())
client = pyimgur.Imgur(IMGUR_CLIENT_ID)
r = client._send_request('https://api.imgur.com/3/image', method='POST', params={'image': data})
return r['link']