我想上传一个.csv文件到谷歌分析通过PHP。不幸的是,谷歌分析API没有提供保存文件名的方法,所以我试图用cURL上传文件。我被卡住了,主要是因为我不知道如何正确地将cURL命令转换为php代码。谷歌分析上传文件与cURL
这是卷曲的命令,成功上传文件,这意味着它不正是我想要的东西,发现here:
curl -X POST -F "[email protected];type=application/octet-stream" "https://www.googleapis.com/upload/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDataSources/CUSTOMDATASOURCEID/uploads?access_token=ya29.REPLACEWIHTYOURVALIDTOKEN" -v
我试图通过以下方式翻译上面的命令到PHP代码,但我做错了什么,因为一个无效的文件正在上传(可能是一个空文件?)。
尝试1:
$parameters = [
'upload' => '@/local/path/to/my/file/test2.csv;type=application/octet-stream',
];
$url = 'https://www.googleapis.com/upload/analytics/v3/management/accounts/' .
$account->code .
'/webproperties/' .
$property->code .
'/customDataSources/' .
$datasource->code .
'/uploads?access_token=' .
$this->client->getAccessToken()['access_token']
;
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($process, CURLOPT_HEADER, false);
curl_setopt($process, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_UPLOAD, true);
curl_setopt($process, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
$return = curl_exec($process);
$httpcode = curl_getinfo($process, CURLINFO_HTTP_CODE);
curl_close($process);
// Runs, but the upload is invalid.
尝试2
// Same as above, except the $parameters set like this
$parameters = [
'upload' => '@/local/path/to/my/file/test2.csv',
'type' => 'application/octet-stream',
];
尝试3
// Same as above, except the $parameters set like this
$cfile = new \CURLFile('/local/path/to/my/file/test2.csv','application/octet-stream','upload');
$parameters = [
'upload' => $cfile,
'type' => 'application/octet-stream',
];
我做,我不能甚至现在还记得很多其他的尝试。我不敢相信,当我已经有了可行的命令,并且我需要将它转换为代码时,它很难实现它。希望有人能帮助我,这要多谢!
编辑
总之,我需要做的是翻译下面的curl命令到PHP代码:
curl -X POST -F "[email protected];type=application/octet-stream" "https://www.googleapis.com/upload/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDataSources/CUSTOMDATASOURCEID/uploads?access_token=ya29.REPLACEWIHTYOURVALIDTOKEN"