2016-11-07 9 views
1

phpでGoogleアナリティクスに.csvファイルをアップロードしようとしています。残念ながら、GoogleアナリティクスAPIはファイル名を保存する方法を提供していないため、代わりにcURLを使用してファイルをアップロードしようとしています。主にcURLコマンドをPHPコードに正しく変換する方法がわからないため、ひどく立ち往生しています。Googleアナリティクスアップロードファイル(cURL付き)

これは、それは私がしたい正確に何を意味し、正常にファイルをアップロード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', 
]; 

私は、私も今では覚えておくことができない他の多くの試みをしました。私はそれが動作するコマンドを既に持っているときにそれを働かせるのはとても難しいとは思っていません、そして、私が必要とするのは、それをコードに翻訳することです...誰かが私を助けてくれることを願っています。要するに

EDIT

、私はPHPのコードに、次のcurlコマンドを翻訳されて何をする必要があるか:

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" 

答えて

0

まあ、2週間後、私はまだ解決策を見つけることができませんでした、私はエグゼクティブを使い終わった。はいはい私は知っていることを知っている、悪い練習などなど、私はそれを正しく行う方法を見つけるまで私はそれに固執しています。

とにかく、誰かが私のような溶液の場合と必死である場合には、これは私が

$result = exec('curl -X POST -F "[email protected]' . $fullPathToFile . ';type=application/octet-stream" "' . $url . '"', $output, $return_var);

になってしまったものです
関連する問題