我目前正致力于在Appengine标准环境中运行烧瓶的项目,我正在尝试在我项目的默认Appengine存储桶上提供已上传到Google Cloud Storage的图像.
这是我目前拥有的路由代码:
# main.py from google.appengine.api import images from flask import Flask,send_file app = Flask(__name__) ... @app.route("/sample_route") def sample_handler(): myphoto = images.Image(filename="/gs/myappname.appspot.com/mysamplefolder/photo.jpg") return send_file(myphoto) ...
但是,我得到一个AttributeError:’Image’对象没有属性’read’错误.
问题是,如何使用python和flask使用任意路径提供来自谷歌云存储的图像?
编辑:
我实际上是在尝试提供我上传到我的应用引擎项目中的默认云存储桶的图像.
我还尝试使用以下代码提供图像但没有成功:
# main.py from google.appengine.api import images from flask import Flask,send_file app = Flask(__name__) ... @app.route("/sample_route") def sample_handler(): import cloudstorage as gcs gcs_file = gcs.open("/mybucketname/mysamplefolder/photo.jpg") img = gcs_file.read() gcs_file.close() return send_file(img,mimetype='image/jpeg') ...
解决方法
我使用了
GoogleAppEngineCloudStorageClient
Python库并使用类似于以下示例的代码加载了图像:
from google.appengine.api import app_identity import cloudstorage from flask import Flask,send_file import io,os app = Flask(__name__) # ... @app.route('/imagetest') def test_image(): # Use BUCKET_NAME or the project default bucket. BUCKET_NAME = '/' + os.environ.get('MY_BUCKET_NAME',app_identity.get_default_gcs_bucket_name()) filename = 'mytestimage.jpg' file = os.path.join(BUCKET_NAME,filename) gcs_file = cloudstorage.open(file) contents = gcs_file.read() gcs_file.close() return send_file(io.BytesIO(contents),mimetype='image/jpeg')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。