Python 地面军事系统与blobstore的等价物是什么;创建“上传”url;?
我们目前使用blobstore.create_upload_url来创建要在前端上使用的上载url请参阅。 然而,随着谷歌向谷歌云存储(GCS)的推进,我希望使用GCS而不是blobstore。我们目前使用blobstore.create\u upload\u url,但我在GCS文档中找不到任何等效内容。我错过什么了吗?有没有更好的方法从前端上传文件到地面军事系统 谢谢Python 地面军事系统与blobstore的等价物是什么;创建“上传”url;?,python,google-app-engine,google-cloud-storage,Python,Google App Engine,Google Cloud Storage,我们目前使用blobstore.create_upload_url来创建要在前端上使用的上载url请参阅。 然而,随着谷歌向谷歌云存储(GCS)的推进,我希望使用GCS而不是blobstore。我们目前使用blobstore.create\u upload\u url,但我在GCS文档中找不到任何等效内容。我错过什么了吗?有没有更好的方法从前端上传文件到地面军事系统 谢谢 Rob如果您将提供gs\u bucket\u name到blobstore。创建上传\u url文件将存储在GCS而不是bl
Rob如果您将提供
gs\u bucket\u name
到blobstore。创建上传\u url
文件将存储在GCS而不是blobstore中,这在官方文档中有描述:
您可以看看webapp2中的简单上载处理程序实现
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
import webapp2
import cloudstorage as gcs
class Upload(blobstore_handlers.BlobstoreUploadHandler):
"""Upload handler
To upload new file you need to follow those steps:
1. send GET request to /upload to retrieve upload session URL
2. send POST request to URL retrieved in step 1
"""
def post(self):
"""Copy uploaded files to provided bucket destination"""
fileinfo = self.get_file_infos()[0]
uploadpath = fileinfo.gs_object_name[3:]
stat = gcs.stat(uploadpath)
# remove auto generated filename from upload path
destpath = "/".join(stat.filename.split("/")[:-1])
# copy file to desired location with proper filename
gcs.copy2(uploadpath, destpath)
# remove file from uploadpath
gcs.delete(uploadpath)
def get(self):
"""Returns URL to open upload session"""
self.response.write(blobstore.create_upload_url(
success_path=uri_for('upload'),
gs_bucket_name="mybucket/subdir/subdir2/filename.ext"))
看看你仍然可以使用blobstore.create_upload_url for GCS这里的文档中有描述:谢谢@manRo所以指定bucketname是blob进入GCS而不是blobstore所需要的全部吗?也许把这个放在答案中,我可以接受。是的,如果你提供bucket名称,这是正确的。文件将上载到GCSalso,注意GCS也有这个,隐藏在api的xml部分。看到和
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
import webapp2
import cloudstorage as gcs
class Upload(blobstore_handlers.BlobstoreUploadHandler):
"""Upload handler
To upload new file you need to follow those steps:
1. send GET request to /upload to retrieve upload session URL
2. send POST request to URL retrieved in step 1
"""
def post(self):
"""Copy uploaded files to provided bucket destination"""
fileinfo = self.get_file_infos()[0]
uploadpath = fileinfo.gs_object_name[3:]
stat = gcs.stat(uploadpath)
# remove auto generated filename from upload path
destpath = "/".join(stat.filename.split("/")[:-1])
# copy file to desired location with proper filename
gcs.copy2(uploadpath, destpath)
# remove file from uploadpath
gcs.delete(uploadpath)
def get(self):
"""Returns URL to open upload session"""
self.response.write(blobstore.create_upload_url(
success_path=uri_for('upload'),
gs_bucket_name="mybucket/subdir/subdir2/filename.ext"))