curl_file_create în PHP

cURL și email PHP 5.5+

Creează un obiect CURLFile, prin care un fișier este încărcat (upload) într-o cerere POST cu cURL.

Sintaxă
curl_file_create(string $filename, ?string $mime_type = null, ?string $posted_filename = null): CURLFile

Ce face curl_file_create

Forma de funcție pentru new CURLFile(...). Obiectul se pune ca valoare în tabloul dat lui CURLOPT_POSTFIELDS, iar cURL trimite cererea ca multipart/form-data, exact ca un formular HTML cu câmp de fișier.

Poți seta tipul MIME și numele cu care apare fișierul la server, independent de numele de pe disc.

Parametri

Parametru Descriere
$filename Calea fișierului de pe disc.
$mime_type Opțional. Tipul MIME, de exemplu "application/pdf".
$posted_filename Opțional. Numele trimis serverului.

Ce returnează

Un obiect CURLFile.

Exemple

Exemplul 1: Obiectul creat

<?php
file_put_contents("cv.pdf", "%PDF-1.4 test");

var_dump(curl_file_create("cv.pdf", "application/pdf", "CV Ana Popescu.pdf"));

Rezultat

object(CURLFile)#1 (3) {
  ["name"]=>
  string(6) "cv.pdf"
  ["mime"]=>
  string(15) "application/pdf"
  ["postname"]=>
  string(18) "CV Ana Popescu.pdf"
}

Exemplul 2: Încărcarea unui fișier

<?php
file_put_contents("cv.pdf", "%PDF-1.4 test");

$ch = curl_init("https://httpbin.org/post");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => [
        "nume" => "Ana Popescu",
        "cv" => curl_file_create("cv.pdf", "application/pdf", "CV Ana Popescu.pdf"),
    ],
]);

$raspuns = json_decode(curl_exec($ch), true);
echo $raspuns["form"]["nume"] . "\n";
echo substr($raspuns["files"]["cv"], 0, 8);

Rezultat real (necesită conexiune la internet)

Ana Popescu
%PDF-1.4

Greșeli frecvente

  • Folosești sintaxa veche "@/cale/fisier.pdf" în CURLOPT_POSTFIELDS. A fost eliminată; textul este trimis ca atare. Folosește CURLFile.

Comenzi înrudite

  • curl_setopt_array: Setează mai multe opțiuni cURL dintr-o dată, dintr-un tablou. Codul devine mai scurt și mai ușor de citit.
  • curl_init / curl_setopt / curl_exec: Pregătește o cerere HTTP către alt server, de exemplu un API. Împreună cu curl_setopt și curl_exec, trimite cererea și primește răspunsul.