无法使用“保存按钮(通过谷歌驱动器)”与数据或blob源

时间:2017-04-06 10:09:50

标签: javascript google-api google-drive-api google-drive-realtime-api

我会将文档保存到谷歌驱动器,这个文档是在我的网络应用程序的客户端实时创建的,使用谷歌驱动器保存按钮,但根本不起作用。

这是一个保存我从那里获取的静态文件的示例:https://developers.google.com/drive/v3/web/savetodrive并且正常工作

<script src="https://apis.google.com/js/platform.js" async defer></script>
<div class="g-savetodrive"
   data-src="//example.com/path/to/myfile.pdf"
   data-filename="My Statement.pdf"
   data-sitename="My Company Name">
</div>

是的,只是它有效,

如果我尝试使用数据或blob字段设置data-src ,则无法保存或出错

<div class="g-savetodrive"
   data-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAKCAYAAABmBXS+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAjSURBVChTY/y/7uR/BgKACUrjBSNc0f8AU/yKQAp+/vzJAABYKgl8odPr0gAAAABJRU5ErkJggg=="
   data-filename="My Statement.pdf"
   data-sitename="My Company Name">
</div>

在此处试用“直播”版本: https://jsbin.com/horopel/edit?html,js,console,output

blob是同样的事情,不起作用,任何解决方案?如果Reactjs解决方案更好,但欢迎任何想法。

1 个答案:

答案 0 :(得分:1)

答案: save button不支持blob源。

直接来自您已关联的documentation

  

不同服务器上的文件请求受Cross Origin约束   资源共享(CORS)限制。

     

1. data-src URL可以从与托管按钮的域相同的域,子域和协议提供。

     

确保在页面和数据之间使用匹配的协议   源。

     

在http和https同一页面提供服务时提供文件,   指定没有协议的资源,例如   data-src =“// example.com/files/file.pdf”,它使用适当的   协议基于托管页面的访问方式。

如您所见,它必须是一个文件。你不能只发送一个文件本身的字符串值。您是否考虑通过Google drive API直接进行文件上传流式传输?