2015-09-04 149 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背後發生的一切! –