[英]how to store an image on Google Cloud Storage sent by Android using Python
我要执行以下操作:
AppEngine需要生成一个我可以用来存储图像的URI(我的猜测)
curl -i http://localhost:8082/upload_form
执行的代码是
class PhotoUploadFormHandler(webapp2.RequestHandler):
def get(self):
upload_url = blobstore.create_upload_url('/upload_photo')
# The method must be "POST" and enctype must be set to "multipart/form-data".
self.response.out.write('***' + upload_url + '***')
application = webapp2.WSGIApplication([('/upload_form', PhotoUploadFormHandler),], debug=True)
输出如下:
HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
cache-control: no-cache
Content-Length: 115
Server: Development/2.0
Date: Fri, 06 Jun 2014 08:52:17 GMT
***http://localhost:8082/_ah/upload/ahNkZXZ-ZXZlbnRzcHVsc2UtZGV2ciILEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YgICAgIDYtQoM***
然后,我使用新网址执行cURL:
curl -v -H 'Content-Type: multipart/form-data' -F "file=@./photofeed.png" http://localhost:8082/_ah/upload/ahNkZXZ-ZXZlbnRzcHVsc2UtZGV2ciILEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YgICAgIDovQoM
这是命令的输出:
* Adding handle: conn: 0x7fcb65021000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fcb65021000) send_pipe: 1, recv_pipe: 0
* About to connect() to localhost port 8082 (#0)
* Trying ::1...
* Connected to localhost (::1) port 8082 (#0)
> POST /_ah/upload/ahNkZXZ-ZXZlbnRzcHVsc2UtZGV2ciILEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YgICAgIDovQoM HTTP/1.1
> User-Agent: curl/7.30.0
> Host: localhost:8082
> Accept: */*
> Content-Length: 2999
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------76b075a1768d
>
< HTTP/1.1 100 Continue
< HTTP/1.1 404 Not Found
< Content-Length: 254
< Content-Type: text/html; charset=UTF-8
* Server Development/2.0 is not blacklisted
< Server: Development/2.0
< Date: Fri, 06 Jun 2014 08:54:38 GMT
* HTTP error before end of send, stop sending
<
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>404 Not Found</h1>
The resource could not be found.<br /><br />
No such upload session: ahNkZXZ-ZXZlbnRzcHVsc2UtZGV2ciILEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YgICAgIDovQoM
</body>
* Closing connection 0
我在这里找到了部分答案: 在Google Cloud Storage中使用Blobstore API
我需要将图像专门创建到Google Cloud Storage中,并且已经将CreateFile方法更改为CreateImage方法
def CreateImage(imageName, imageData):
"""Create a GCS file with GCS client lib.
Args:
filename: GCS filename.
Returns:
The corresponding string blobkey for this GCS file.
"""
# Create a GCS file with GCS client.
with gcs.open(imageName, 'w') as f:
f.write(imageData)
# Blobstore API requires extra /gs to distinguish against blobstore files.
blobstore_filename = '/gs' + imageName
# This blob_key works with blobstore APIs that do not expect a
# corresponding BlobInfo in datastore.
return blobstore.create_gs_key(blobstore_filename)
上载网址可能已过期? 只能使用几分钟。
另请参阅: 谷歌应用引擎; 上载到blobstore会显示404错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.