我有一个应用程序可以成功地将小于10MB的视频上传到指定的Google云端存储分区,但是,它不会这样做,因为该文件大于10MB。
我想知道如何使用可恢复的上传来完成此操作。我不想要任何文档链接,我已经阅读了所有文档。它没有帮助。
我在python中这样做。我理解我做一个可恢复的上传我需要我的授权令牌,我不知道该怎么做。那么有人可以帮我一些代码吗?
以下是发布视频的代码< 10MB
class GetData(webapp2.RequestHandler):
def post(self):
data = self.request.get('file')
bucketname = self.request.get('bucketname')
typeOf = self.request.get('content_type')
sender = self.request.get('sender')
profileVideo = self.request.get('isProfileVideo')
file_path = ''
now = time.time()
objectname = now
try:
keytext = open(conf.PRIVATE_KEY_PATH, 'rb').read()
except IOError as e:
sys.exit('Error while reading private key: %s' % e)
private_key = RSA.importKey(keytext)
signer = CloudStorageURLSigner(private_key, conf.SERVICE_ACCOUNT_EMAIL,
GCS_API_ENDPOINT)
subDirectory = 'videoMesseagesFrom' + sender
if profileVideo == 'true':
file_path = '/%s/Profile_Videos/%s' % (bucketname, objectname)
r = signer.Put(file_path, typeOf, data)
else:
file_path = '/%s/%s/%s' % (bucketname, subDirectory, objectname)
r = signer.Put(file_path, typeOf, data)
self.response.headers['Content-Type'] = 'application/json'
obj = {
'Completion' : 'Video Successfully uploaded'
}
self.response.out.write(json.dumps(obj))
我传入文件和存储桶名称。这会从我在项目中生成的Google生成的密钥中获取我的凭据并签署PUT URL,然后为我提供。
def Put(self, path, content_type, data):
"""Performs a PUT request.
Args:
path: The relative API path to access, e.g. '/bucket/object'.
content_type: The content type to assign to the upload.
data: The file data to upload to the new file.
Returns:
An instance of requests.Response containing the HTTP response.
"""
md5_digest = base64.b64encode(md5.new(data).digest())
base_url, query_params = self._MakeUrl('PUT', path, content_type,
md5_digest)
headers = {}
headers['Content-Type'] = content_type
headers['Content-Length'] = str(len(data))
headers['Content-MD5'] = md5_digest
return self.session.put(base_url, params=query_params, headers=headers,
data=data)
它已经使用Content-Type标头和所有这些进行了put请求。也许我可以对此进行检查,因此如果文件大于10MB,则以某种方式将PUT方法编辑为可恢复的上载,或者将其上传到块中。但是,我不知道该怎么做。