使用 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 filename 到 upload_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']
我想将已上传到我的 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 filename 到 upload_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']