我想上传到Imgur上传到我的Flask应用的图片。目前,我将上传的文件保存到临时文件,然后将文件名传递给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
答案 0 :(得分:2)
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']