2015-09-04 93 views
1

我想上传到Imgur上传到我的Flask应用的图片。目前,我将上传的文件保存到临时文件,然后将文件名传递到upload_image。有一种更简单的方法可以避免临时文件?使用PyImgur上传上传的图片而不保存到临时文件

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 

回答

1

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'] 
+0

谢谢!这不仅有助于简化我的代码,而且还使我能够很好地理解PyImgur背后发生的一切! –