Flask Web開發入門(十一)之圖片展現

__HelloWorld__發表於2018-01-11

Flask Web開發入門(十)之圖片上傳(使用Flask-Uploads)我們介紹了使用Flask外掛Flask-Uploads上傳圖片,本章就此話題繼續展開。

我們知道,我們可以通過UPLOADS_DEFAULT_DEST引數來指定檔案上傳的預設路徑,假如我們指定的路徑是upload目錄,那麼檔案實際儲存的路徑為:

upload/files/xxx

注意,filesUploadSet中的name引數,xxx為檔名

在上一章中,我們說過,Flask-Uploads儲存檔案的核心方法為:

uploaded_photos.save(file)

這個方法返回的是實際儲存的檔名filename,當我們在完成儲存檔案動作之後,我們通過呼叫url方法:

logger.debug(‘%s url is %s’ % (filename, uploaded_photos.url(filename)))

就可以得到上傳檔案的網站訪問全路徑,即我們指定UPLOADS_DEFAULT_URL引數 + files/xxx,即:

IMG20170422084710.jpg url is http://127.0.0.1:9000/files/IMG20170422084710.jpg

圖片上傳完畢之後,我們還需要檢視圖片,因此,基於上面的分析,我們的展現程式碼實現如下:

# show photo
@app.route('/files/<string:filename>', methods=['GET'])
def show_photo(filename):
    if request.method == 'GET':
        if filename is None:
            pass
        else:
            logger.debug('filename is %s' % filename)
            image_data = open(os.path.join(UPLOAD_PATH, 'files/%s' % filename), "rb").read()
            response = make_response(image_data)
            response.headers['Content-Type'] = 'image/png'
            return response
    else:
        pass

原始碼參考:https://github.com/ypmc/flask-sqlalchemy-web

相關文章