2014-03-29 4 views
9

Ich weiß, dass dies wahr zu sein:Wie kann ich cURLs '@' Syntax mit einer Remote-URL verwenden?

... Sie eine Datei schreiben können, die bereits auf dem Dateisystem ist durch den Dateipfad mit prefixing „@“.

aber ich versuche, eine Datei mit cURL POST, die nicht vor Ort ist. Es ist auf einer anderen URL gespeichert. Sagen wir einfach dieses Foto ist Google's logo (es ist nicht). Die URL davon ist https://www.google.com/images/srpr/logo11w.png. So würde ich denken, dass Sie etwas tun würden wie folgt:

Allerdings scheint dies aus irgendeinem Grund nicht zu funktionieren. Außerdem habe ich versucht, 'image' => '@' . file_get_contents($url) zu verwenden. Auch das hat nicht funktioniert.

Es sieht wie eine Möglichkeit aus, um eine temporäre Datei zu verwenden. Ist das die einzige Lösung für dieses Problem? In jedem Fall, wie kann ich dieses Problem lösen?

+0

Sie meinen '$ file = file_get_contents ('...');' statt? –

+0

@AmalMurali Muss ich das für eine nicht lokale Datei verwenden? – hichris123

+0

haben Sie versucht, nur '$ file =" https://www.google.com/images/srpr/logo11w.png ";' –

Antwort

6

Sie nicht verwenden jede http url für den Dateipfad zu locken. Sie müssen die lokale Datei verwenden. Laden Sie die Datei zuerst in ein temporäres Verzeichnis herunter.

file_put_contents("/var/tmp/xyz/output.jpg", file_get_contents("https://www.google.com/images/srpr/logo11w.png")); 

Dann diese temporäre Datei in Ihre curl verwenden:

'image' => '@/var/tmp/xyz/output.jpg' 
+0

Ja, Sie haben Recht. Vielen Dank! Eine letzte Frage: Wird die Datei automatisch gelöscht oder muss ich sie manuell löschen? Oder wird es sich automatisch selbst überschreiben? – hichris123

+3

Es wird nicht automatisch gelöscht. Es wird automatisch überschrieben, wenn Sie es das nächste Mal anrufen. Aber am Ende des Tages, wenn das Programm endet, können Sie es löschen, wenn Sie möchten. –

Verwandte Themen