2017-05-25 3 views
2

Ich bin sicher, diese Frage wurde oft gestellt, aber ich kann nicht herausfinden, warum mein PHP-Skript nicht funktioniert. Ich habe eine CSV-Datei, die ich weiß, es funktioniert einwandfrei, wenn ich lade es die folgende Befehlszeile curl mit:Laden Sie eine CSV-Datei über PHP Curl

curl -H 'Content-Type: text/csv' --data-binary @/Users/johndoe/Downloads/payables.csv -H "Authorization: Bearer [some_token_key]" 'https://example.com/api/v1/imports.json' 

Und hier ist mein PHP-Skript, wenn ich diesen Befehl in PHP Locken zu übersetzen versucht:

$file = "/Users/johndoe/Downloads/payables.csv"; 
$authorization = "Authorization: Bearer [some_token_key]"; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "https://example.org/api/v1/imports.json"); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_HTTPHEADER, [$authorization, 'Content-Type: text/csv']); 
$cfile = new CurlFile($file, 'text/csv'); 
$data = array('data-binary' => realpath($cfile)); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$curl_response = curl_exec($curl); 
curl_close($curl); 

Kann jemand sehen, was mit meinem PHP-Skript falsch ist? Ich benutze PHP 5.5, und der Fehler, den ich auf der Empfängerseite sehe, die versucht, die CSV-Datei zu verarbeiten, ist, dass es die CSV-Import-Header nicht finden kann. Dies ergibt keinen Sinn. Irgendwelche Ideen?

+0

denke ich PHP-Skript nicht in der Lage war Datei von /Users/johndoe/Downloads/payables.csv zu lesen, setzen Sie es in Stammverzeichnis also dort, wo Ihre PHP-Skript befindet und – sumit

+0

@sumit versuchen, das nicht funktioniert hat . Ich habe die Datei in das Stammverzeichnis meiner Anwendung gestellt und nichts. Derselbe Fehler. – user1370897

Antwort

1

Anstatt zu versuchen, auf Ihren Download-Ordner zuzugreifen, laden Sie die Dateien in Ihrem Projektverzeichnis hoch und geben Sie sie an die Locke weiter.

move_uploaded_file($_FILES['file']['tmp_name'], __DIR__.'/uploads/'. $_FILES["image"]['name']); 

$file = "uploads/payables.csv"; 
$authorization = "Authorization: Bearer [some_token_key]"; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "https://example.org/api/v1/imports.json"); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_HTTPHEADER, [$authorization, 'Content-Type: text/csv']); 
$cfile = new CurlFile($file, 'text/csv'); 
//curl file itself return the realpath with prefix of @ 
$data = array('data-binary' => $cfile); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$curl_response = curl_exec($curl); 
curl_close($curl);