我在使用python编写的Google App Engine上有一个应用程序,我使用这个应用程序作为我用PHP编写的Web应用程序的服务器,我使用它作为客户端使用javascript端点在GAE上调用我的服务器端api。 / p>
我想使用谷歌云端点从我的网络应用程序上传文件到我的GAE应用程序。我研究了blob商店,但它没有多大帮助。
请建议我该怎么做。
答案 0 :(得分:1)
您必须使用云存储来存储文件,而不是Blobstore。
使用GCS,因为:
要使用GCS,您必须使用https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/
以下是Java中使用此API的示例:
GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(CONSTANTES.BUCKETNAME, unique+".jpg");
GcsFileOptions options = new GcsFileOptions.Builder()
.mimeType("image/jpg")
.acl("public-read")
.build();
GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options);
答案 1 :(得分:0)
其他用户写的关于GCS的内容回答了你问题的存储部分 - 你绝对应该使用GCS - 但是就你将表单数据发布到端点函数的想法而言,这绝对不是建议的。 API调用应该是微小的数据。 API应该像纸飞机一样,轻轻地飞向您的服务器以请求一些真实的数据。
让用户将文件上传到GCS的方法是为他们提供一个带有文件上传表单(enctype="multipart/form-data"
)的页面,其中表单action
参数是生成的上传网址,用于模拟您的页面使用GCS client library function createUploadUrl()
的servlet的doGet(HttpServletRequest req, HttpServletResponse resp)
方法。您可以像这样使用它:
String uploadUrl = blobstoreService
.createUploadUrl("/upload",
UploadOptions.Builder.withGoogleStorageBucketName("my_bucket"));
通过这种方式,您可以获得用户文件POST将转到的GCS上传URL。路线/upload
是您的应用上的路线,一旦收到上传,该路线将被重定向。您添加的任何额外表单参数仍将对您为该路由定义的请求处理程序(servlet上的doPost()
方法)可见。
通过所有这些信息,您已准备好开始向用户提供文件上传表单,而无需担心这与云端点的交互方式。使用端点来定义javascript / Android / iOS客户端所需的API调用,而不是用于处理文件上载。