我正在尝试使用Google提供的“保存到驱动器”按钮,以便更轻松地上传云端硬盘,它看起来像这样:
<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>
我的问题是,由于我使用Laravel和php artisan serve
命令来为我的项目提供服务,我应该如何编写文件路径?它位于'项目名称'/ storage / app / docs /,我尝试//storage/app/docs/{{ $file->path }}
但它不起作用,并且使用storage_path()没有改变任何东西。我在这里错过了什么?
编辑: 我尝试使用另一个文件,一个托管在其他地方的文件。所以我在我的项目上启用了CORS,并使用Postman测试了我正在使用的标题:
Access-Control-Allow-Headers →Content-Type, X-Auth-Token, Origin, Range
Access-Control-Allow-Methods →POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin →*
Access-Control-Expose-Headers →Cache-Control, Content-Encoding, Content-Range
根据Google文档,它应该现在正在运行,但事实并非如此。 这是我在控制台中遇到的错误:
Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8000' is therefore not allowed access.
The response had HTTP status code 400.
而且我理所当然地缺乏想法。
答案 0 :(得分:0)
正如文件中所述 - Troubleshooting,
如果在下载data-src网址时收到XHR错误,请确认该资源确实存在,并且您没有CORS问题。
如果“保存到云端硬盘”按钮适用于除Internet Explorer 9以外的所有浏览器,则可能需要将浏览器配置为启用CORS,默认情况下已禁用该版本。
如果大文件被截断为2MB,则可能是您的服务器未公开Content-Range,可能是CORS问题。
请注意相关SO问题的答案 - Save To Drive Button Doesn't Work和documentation:
可以从其他域提供
data-src
网址,但HTTP服务器的响应需要支持HTTP OPTION请求并包含以下特殊HTTP标头:
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Cache-Control, Content-Encoding, Content-Range