我已经实现了javascript代码,可以将多块文件上传到google云存储。
下面是我执行上传文件的流程: 1.用户选择使用javascript客户端web应用程序{request来自亚洲地区}2上载文件。2. javascript客户端应用程序请求到我们在Nodejs {托管在google云的计算引擎- US region}中实现的应用服务器,以允许文件上载{授权}2。NODEJS App服务器向客户端应用程序3返回一个签名命令。客户端应用程序开始使用签名的url 4将文件以多块的形式上载到google存储。
我可以多块上传文件,,但我注意到,如果我在google区域托管nodejs应用服务器,而不是在执行客户端应用程序请求的同一台机器上托管,那么上传速度要慢2-3倍。
如果您有解决方案,请告诉我如何提高上传性能。
在google签名-url文档中提到了一些解决办法:
可恢复的上传被固定在他们开始的区域。例如,如果您在美国创建了一个可恢复的上传URL,并将其提供给亚洲的客户端,则该上载仍然要经过美国。在未启动的区域执行可恢复的上载会导致缓慢的上载。为了避免这种情况,您可以让服务器构建并签名初始POST请求,但将签名的URL提供给客户端,以便从它们的位置开始上传。一旦启动,客户端通常可以使用生成的会话URI来发出不需要签名的PUT请求。
但有了这一提法:
发布于 2017-04-19 20:17:28
您可能混淆了两个单独的GCS功能。GCS允许以两种方式将可恢复的上传授权给没有凭据的第三方。
首先,和首选,是签名的URL。您将向客户端发送一个签名的URL,该客户端将允许该客户端开始可恢复的上载。
第二,由于上面提到的区域固定,所以不太喜欢的是让服务器启动一个可恢复的上载本身,然后将上传ID传递给客户端。
听起来你想要的是第一件事,但你用的是第二件。
使用签名URL需要使用XML,它以与JSON类似的方式处理可恢复的上载:https://cloud.google.com/storage/docs/xml-api/resumable-upload
您将需要对第一个POST调用进行签名,以创建一个上传,并将该URL传递给用户自己调用。
https://stackoverflow.com/questions/43488639
复制相似问题