Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从在线下载链接而不是直接访问文件_Php_Download_Google Sheets - Fatal编程技术网

PHP从在线下载链接而不是直接访问文件

PHP从在线下载链接而不是直接访问文件,php,download,google-sheets,Php,Download,Google Sheets,我在谷歌硬盘上有一个在线电子表格。此电子表格是公共的,可以通过url访问。将export?format=csv附加到公共url会打开下载提示,允许客户端查看器通过选择文件位置并单击“下载”将在线电子表格文件的csv版本下载到其计算机上 我想做的是允许我的PHP脚本与Google提供的下载链接进行交互https://docs.google.com/spreadsheets/d//export?format=csv 而不是像www.example.com/file.csv这样的直接下载链接 由于go

我在谷歌硬盘上有一个在线电子表格。此电子表格是公共的,可以通过url访问。将
export?format=csv
附加到公共url会打开下载提示,允许客户端查看器通过选择文件位置并单击“下载”将在线电子表格文件的csv版本下载到其计算机上

我想做的是允许我的PHP脚本与Google提供的下载链接进行交互
https://docs.google.com/spreadsheets/d//export?format=csv

而不是像
www.example.com/file.csv这样的直接下载链接

由于google使用
$\u GET
?format=csv
来引导客户端下载,因此我不能仅使用
include_once()
或类似方法来访问脚本中的文件,因为这将访问负责显示google电子表格的HTML文件


如果不是直接下载链接,如何通过PHP访问此在线下载?PHP之外的其他方法也是受欢迎的,只要我可以通过PHP访问CSV文件的数据(或将其临时或永久下载到服务器上)

Simple
file\u get\u contents()
在您的情况下应该可以正常工作

$content = file_get_contents('https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv');
$content=file\u get\u contents('https://docs.google.com/spreadsheets/d//export?format=csv');

Simple
file\u get\u contents()
在您的情况下应该可以正常工作

$content = file_get_contents('https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv');
$content=file\u get\u contents('https://docs.google.com/spreadsheets/d//export?format=csv');

经过几天的困惑和问题解决,我终于根据网上的多个教程和示例找到了这个答案。它们没有一个完全符合我的需要,但基本上这就是我想出的从互联网下载已发布的谷歌电子表格,而不使用谷歌API

$fileid = "spreadsheet file id here";
$url = "https://docs.google.com/spreadsheets/d/".$fileid."/export?format=csv&id=".$fileid;

$newfilename = "newfile";

$file = fopen($url,"r");

$output = fopen($newfilename.'.csv', 'wb');

while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
       fputcsv($output, $data);
}

fclose($file);
fclose($output);
运行此代码后,脚本从Google电子表格中获取数据并将其输出到新创建的文件中,该文件由
$newfilename.csv
text/csv
格式确定


我希望这对将来的人有所帮助。我在SO和其他网站上看到了很多关于如何在没有API的情况下访问CSV格式的Google电子表格数据的话题,在从未找到不涉及API的真正答案之后,我想我已经做到了

经过几天的困惑和问题解决,我终于根据网上的多个教程和示例解决了这个问题。它们没有一个完全符合我的需要,但基本上这就是我想出的从互联网下载已发布的谷歌电子表格,而不使用谷歌API

$fileid = "spreadsheet file id here";
$url = "https://docs.google.com/spreadsheets/d/".$fileid."/export?format=csv&id=".$fileid;

$newfilename = "newfile";

$file = fopen($url,"r");

$output = fopen($newfilename.'.csv', 'wb');

while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
       fputcsv($output, $data);
}

fclose($file);
fclose($output);
运行此代码后,脚本从Google电子表格中获取数据并将其输出到新创建的文件中,该文件由
$newfilename.csv
text/csv
格式确定


我希望这对将来的人有所帮助。我在SO和其他网站上看到了很多关于如何在没有API的情况下访问CSV格式的Google电子表格数据的话题,在从未找到不涉及API的真正答案之后,我想我已经做到了

在本例中,这只是给出了周围的HTML页面。而不是将CSV数据作为
$content
提供给我。还有其他想法吗?在这个例子中,这只是给了我周围的HTML页面。而不是将CSV数据作为
$content
提供给我。还有其他想法吗??