curl_setopt — Définissez une option de transport cURL.


Description

bool curl_setopt ( resource $ch , int $option , mixed $value )

Définit une option pour le handle de session cURL donné.


Paramètres

ch

Le handle cURL renvoyé par curl_init().

option

CURLOPT_XXX options qui doivent être définies.

valeur

La valeur qui sera définie sur l'option.

Pour les paramètres facultatifs des options suivantes, la valeur doit être définie sur une valeur de type booléen :

Options FacultatifvaleurValeur Remarques
CURLOPT_AUTOREFERER Lors d'une redirection basée sur Location :, définissez automatiquement les informations Referer : dans l'en-tête.
CURLOPT_BINARYTRANSFER Lorsque CURLOPT_RETURNTRANSFER est activé, renvoie le natif ( Raw ) sortir.
CURLOPT_COOKIESESSION Lorsque activé, curl ne transmettra qu'un seul cookie de session et ignorera les autres cookies. par défaut Dans ce cas, cURL renverra tous les cookies au serveur. Les cookies de session font référence aux cookies utilisés pour déterminer si la session côté serveur est valide.
CURLOPT_CRLF Lorsqu'il est activé, convertit les sauts de ligne Unix en sauts de ligne de retour chariot.
CURLOPT_DNS_USE_GLOBAL_CACHE Lorsqu'il est activé, un cache DNS global sera activé. safe et est activé par défaut.
CURLOPT_FAILONERROR Affiche le code d'état HTTP Le comportement par défaut est d'ignorer les messages HTTP avec des chiffres. inférieur ou égal à 400 .
CURLOPT_FILETIME Lorsque cette option est activée, une tentative sera effectuée pour modifier les informations dans le document distant. Les informations sur le résultat seront renvoyées via l'option CURLINFO_FILETIME de la fonction curl_getinfo(). curl_getinfo().
CURLOPT_FOLLOWLOCATION Lorsqu'il est activé, le serveur renverra " Emplacement : " est placé dans l'en-tête et renvoyé au serveur de manière récursive. Utilisez CURLOPT_MAXREDIRS pour limiter le nombre de retours récursifs.
CURLOPT_FORBID_REUSE Déconnexion forcée après avoir terminé l'interaction et ne peut pas être réutilisé.
CURLOPT_FRESH_CONNECT Forcer une nouvelle connexion pour remplacer celle du cache.
CURLOPT_FTP_USE_EPRT Lorsque cette option est activée, utilisez la commande EPRT (ou LPRT) lors des téléchargements FTP. Désactivez EPRT et LPRT lorsqu'ils sont définis sur FALSE, utilisez la commande PORT uniquement.
CURLOPT_FTP_USE_EPSV Lorsque activé, avant de revenir au mode PASV pendant le transfert FTP Essayez le Commande EPSV. Désactive la commande EPSV lorsqu'elle est définie sur FALSE.
CURLOPT_FTPAPPEND Lorsque cette option est activée, l'ajout écrit dans le fichier au lieu de l'écraser. Alias ​​​​de
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT.
CURLOPT_FTPLISTONLY Lorsque cette option est activée, seul le nom du répertoire FTP est répertorié.
CURLOPT_HEADER Lorsque cette option est activée, les informations du fichier d'en-tête seront affichées sous forme de flux de données.
CURLINFO_HEADER_OUT La chaîne de requête pour le handle de suivi lorsqu'il est activé. Disponible à partir de PHP 5.1.3. CURLINFO_Le préfixe est intentionnel.
CURLOPT_HTTPGET Lorsqu'elle est activée, la méthode HTTP sera définie sur GET. Étant donné que GET est la valeur par défaut, elle n'est utilisée que lorsqu'elle l'est. modifié.
CURLOPT_HTTPPROXYTUNNEL Lorsqu'il est activé, il sera transmis via un proxy HTTP.
CURLOPT_MUTE Lorsqu'il est activé, tous les paramètres modifiés dans la fonction cURL seront restaurés à leur valeur par défaut valeurs.
CURLOPT_NETRC Une fois la connexion établie, visitez ~/.netrc Le fichier obtient les informations de nom d'utilisateur et de mot de passe pour se connecter au site distant.
CURLOPT_NOBODY Lorsque cette option est activée, la partie CORPS en HTML ne sera pas affichée.
CURLOPT_NOPROGRESS

Fermez la barre de progression du transfert de boucles lorsqu'elle est activée, la valeur par défaut pour cet élément est défini sur activé.

Remarque :

PHP définit automatiquement cette option sur TRUE, cette option ne doit être modifiée qu'à des fins de débogage.


CURLOPT_NOSIGNAL Lorsqu'il est activé, ignorer toutes les passes curl au signal php . Cet élément est activé par défaut lors de la transmission multithread SAPI. cURL a été ajouté dans la version 7.10.
CURLOPT_POST Lorsque activé, une requête POST régulière sera envoyée, de type : application/x-www-form- urlencoded , tout comme la soumission d'un formulaire.
CURLOPT_PUT permet à HTTP d'envoyer des fichiers lorsqu'il est activé et doit également définir CURLOPT_INFILE et CURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER Renvoyer les informations obtenues par curl_exec() sous la forme d'un flux de fichier à la place de sortie directe.
CURLOPT_SSL_VERIFYPEER Lorsque cURL est désactivé, il mettra fin à la vérification du serveur. Utilisez l'option CURLOPT_CAINFO pour définir le certificat. Utilisez l'option CURLOPT_CAPATH pour définir le répertoire du certificat.           Si CURLOPT_SSL_VERIFYPEER (la valeur par défaut est 2) est activé, CURLOPT_SSL_VERIFYHOST doit être défini sur TRUE, sinon défini sur FALSE. est par défaut TRUE depuis cURL 7.10. À partir de cURL 7.10, l'installation du bundle est effectuée par défaut.
CURLOPT_TRANSFERTEXT Utilisez le mode ASCII pour les transferts FTP lorsqu'il est activé. Pour LDAP, il récupère des informations en texte brut plutôt qu'en HTML. Sur les systèmes Windows, le système ne définit pas STDOUT en mode binaire.
CURLOPT_UNRESTRICTED_AUTH En-têtes multiples générés à l'aide de CURLOPT_FOLLOWLOCATION Les informations sur le nom d'utilisateur et le mot de passe continuent à ajouter aux emplacements, même si le nom de domaine a changé.
CURLOPT_UPLOAD Activer pour autoriser les téléchargements de fichiers.
CURLOPT_VERBOSE Lorsque cette option est activée, toutes les informations seront signalées et stockées dans STDERR ou le CURLOPT_STDERR spécifié.

Pour les paramètres facultatifs des options suivantes, la valeur doit être définie sur une valeur de type entier :

est utilisé pour spécifier le port de connexion. (Facultatif) CURLOPT_PROTOCOLS. Si elle est activée, la valeur du champ de bits limite les protocoles que libcurl peut utiliser pendant les transferts. Cela vous permettra de compiler libcurl pour prendre en charge de nombreux protocoles, mais uniquement pour en utiliser un sous-ensemble dont l'utilisation est autorisée. Par défaut, libcurl utilisera tous les protocoles qu'il prend en charge. Voir CURLOPT_REDIR_PROTOCOLS LE, CURLPROTO_TFTP, CURLPROTO_ALLMéthode de vérification pour la connexion proxy HTTP. Utilisez les indicateurs de champ de bits dans et Le port du serveur proxy. Le port peut également être défini dans Définissez le nombre maximum de secondes pendant lesquelles cURL est autorisé à s'exécuter. Définissez le nombre maximum de millisecondes pendant lesquelles cURL est autorisé à s'exécuter. a été ajouté dans cURL 7.16.2. Disponible à partir de PHP 5.2.3. Définir un horodatage utilisé par

Pour les paramètres facultatifs des options suivantes, la valeur doit être définie sur une valeur de type chaîne :

Options FacultatifvaleurValeur Remarques
CURLOPT_BUFFERSIZE La taille du cache lue dans les données obtenues à chaque fois, mais rien ne garantit que cette valeur sera remplie à chaque fois. a été ajouté dans cURL 7.10.
CURLOPT_CLOSEPOLICY Soit CURLCLOSEPOLICY_LEAST_RECENTLY_USED, soit CURLCLOSEPOLICY_OLDEST Il existe trois autres CURLCLOSEPOLICY, mais cURL ne les prend pas encore en charge.
CURLOPT_CONNECTTIMEOUT Le temps d'attente avant d'établir une connexion S'il est défini sur 0, il le sera. attendre indéfiniment.
CURLOPT_CONNECTTIMEOUT_MS Le temps d'attente en millisecondes pour une tentative de connexion. S'il est défini sur 0, attendez indéfiniment. a été ajouté dans cURL 7.16.2. Disponible à partir de PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT Définissez l'heure d'enregistrement des informations DNS en mémoire, la valeur par défaut est de 120 secondes.
CURLOPT_FTPSSLAUTH Méthode de vérification FTP : CURLFTPAUTH_SSL (essayez d'abord SSL) , CURLFTPAUTH_TLS (essayez d'abord TLS) ou CURLFTPAUTH_DEFAULT (laissez cURL décider automatiquement). a été ajouté dans cURL 7.12.2.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (valeur par défaut, laissez cURL décider quelle version utiliser), CURL_HTTP_VERSION_1_0 (forcer HTTP/1.0) ou CURL_HTTP_VERSION_1_1 (forcer HTTP/1.1).
CURLOPT_INFILESIZE Définissez la limite de taille des fichiers téléchargés en octets.
CURLOPT_LOW_SPEED_LIMIT Lorsque la vitesse de transfert est inférieure à CURLOPT_LOW_SPEED_LIMIT (octets /sec ), PHP utilisera CURLOPT_LOW_SPEED_TIME pour déterminer s'il faut annuler la transmission car elle est trop lente.
CURLOPT_LOW_SPEED_TIME Lorsque la vitesse de transfert est inférieure à CURLOPT_LOW_SPEED_LIMIT (octets /sec ), PHP utilisera CURLOPT_LOW_SPEED_TIME pour déterminer s'il faut annuler la transmission car elle est trop lente.
CURLOPT_MAXCONNECTS Le nombre maximum de connexions autorisées, en cas de dépassement, CURLOPT_CLOSEPOLICY Décidez quelles connexions doivent être interrompues.
CURLOPT_MAXREDIRS Spécifie le nombre maximum de redirections HTTP. Cette option est la même que Utilisé avec CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT
CURLOPT_PROTOCOLS Pointeur Bitfield pour CURLPROTO_* . Si elle est activée, la valeur du champ de bits limite les protocoles que libcurl peut utiliser pendant les transferts. Cela vous permettra de compiler libcurl pour prendre en charge de nombreux protocoles, mais uniquement pour en utiliser un sous-ensemble dont l'utilisation est autorisée. Par défaut, libcurl utilisera tous les protocoles qu'il prend en charge. Voir CURLOPT_REDIR_PROTOCOLS LE, CURLPROTO_TFTP, CURLPROTO_ALL dans cURL 7.19 a été ajouté. Les champs de bits de
CURLPROTO_* dans cURL 7.19 a été ajouté. CURLOPT_PROXYAUTH
CURLOPT_HTTPAUTH pour définir les options correspondantes. Pour l'authentification proxy, seuls CURLAUTH_BASICCURLAUTH_NTLM sont actuellement pris en charge. a été ajouté dans cURL 7.10.7. CURLOPT_PROXYPORT
CURLOPT_PROXY.
CURLOPT_PROXYTYPE est soit CURLPROXY_HTTP (par défaut) ou CURLPROXY_SOCKS5. a été ajouté dans cURL 7.10. La valeur du champ de bits dans
CURLOPT_REDIR_PROTOCOLS CURLPROTO_*. Si elle est activée, la valeur du champ de bits limitera les protocoles que le thread de transport peut utiliser lors du suivi d'une redirection lorsque CURLOPT_FOLLOWLOCATION est activé. Cela vous permettra de restreindre le thread de transport à un sous-ensemble de protocoles autorisés lors de la redirection. Par défaut, libcurl autorisera tous les protocoles sauf FILE et SCP. Ceci est légèrement différent de la version préliminaire 7.19.4 qui suit inconditionnellement tous les protocoles pris en charge. Pour les constantes de protocole, veuillez vous référer à CURLOPT_PROTOCOLS. a été ajouté dans cURL 7.19.4.
CURLOPT_RESUME_FROM Transmettre un décalage d'octet lors de la reprise de la transmission (utilisé pour la reprise de la transmission).
CURLOPT_SSL_VERIFYHOST 1 Vérifiez si un nom commun existe dans le certificat SSL du serveur. Note du traducteur : Common Name signifie généralement renseigner le nom de domaine (domaine) ou le sous-domaine (sous-domaine) pour lequel vous allez demander un certificat SSL. 2 Vérifiez que le nom commun existe et correspond au nom d'hôte fourni.
CURLOPT_SSLVERSION La version SSL à utiliser (2 ou 3). Par défaut, PHP détectera cette valeur tout seul, même si dans certains cas, il faudra peut-être la définir manuellement.
CURLOPT_TIMECONDITION Si après un certain temps précisé par CURLOPT_TIMEVALUE Si a été modifié, utilisez CURL_TIMECOND_IFMODSINCE pour revenir à la page. S'il n'a pas été modifié et que CURLOPT_HEADER est vrai, un en-tête "304 Not Modified" sera. renvoyé CURLOPT_HEADER est faux, utilisez CURL_TIMECOND_IFUNMODSINCE, et la valeur par défaut est CURL_TIMECOND_IFUNMODSINCE.
CURLOPT_TIMEOUT
CURLOPT_TIMEOUT_MS
CURLOPT_TIMEVALUE CURLOPT_TIMECONDITION Par défaut, CURL_TIMECOND_IFMODSINCE est utilisé . .
CURLOPT_SSL_VERIFYPEERCURLOPT_COOKIE"Cookie : ""). Remplacez HEAD" sous forme de requête HTTP. Ceci est utile pour exécuter "DELETE""POST"Passez le nom d'utilisateur et le mot de passe requis pour une connexion au format :
Options Facultatif valeurValeur Remarques
CURLOPT_CAINFO On détient 1 ou plusieurs Le nom de fichier de le certificat utilisé pour la vérification par le serveur. Ce paramètre n'a de sens que lorsqu'il est utilisé avec CURLOPT_SSL_VERIFYPEER. . Cette option s'utilise avec .
Définir le partie du HTTP demander du contenu. Plusieurs cookies sont séparés par un point-virgule suivi d'un espace (par exemple, "
fruit=apple; color=red
CURLOPT_COOKIEFILELe nom du fichier contenant les données du cookie peut être Netscape. format. Ou enregistrez simplement les informations d’en-tête HTTP pures dans le fichier.
CURLOPT_COOKIEJAR Un fichier qui enregistre les informations sur les cookies une fois la connexion terminée.
CURLOPT_CUSTOMREQUEST par un message de demande personnalisé GET"
ou
ou d'autres requêtes HTTP plus secrètes. Les valeurs valides incluent "GET", ,

"CONNECT", etc. Autrement dit, n'entrez pas l'intégralité de la requête HTTP ici. Par exemple, saisir "GET /index.html HTTP/1.0rnrn" est incorrect. Remarque :N'utilisez pas cette méthode de requête personnalisée tant que vous n'êtes pas sûr que le serveur la prend en charge.


CURLOPT_EGDSOCKET Semblable à CURLOPT_RANDOM_FILE, à l'exception d'un Prise du démon de collecte d'entropie.
CURLOPT_ENCODING En-tête de requête HTTP "Accept-Encoding : " valeur . Les encodages pris en charge sont "identity", "deflate" et "gzip". S'il s'agit d'une chaîne vide "", l'en-tête de la requête enverra tous les types d'encodage pris en charge. a été ajouté dans cURL 7.10.
CURLOPT_FTPPORT Cette valeur sera utilisée pour obtenir l'adresse IP requise pour la commande FTP "POST". La commande "POST" indique au serveur distant de se connecter à l'adresse IP que nous avons spécifiée. Cette chaîne peut être une adresse IP en texte brut, un nom d'hôte, un nom d'interface réseau (sous UNIX) ou simplement un '-' pour utiliser l'adresse IP par défaut.
CURLOPT_INTERFACE Le nom de l'interface d'envoi du réseau, qui peut être un nom d'interface, une adresse IP ou un nom d'hôte.
CURLOPT_KRB4LEVEL Niveau de sécurité KRB4 (Kerberos 4). Toutes les valeurs suivantes sont valides (par ordre décroissant) : "clear", "safe", "confidential", "privé".. Si la chaîne ne correspond à aucun de ces éléments, "private" sera utilisé. Définir cette option sur NULL désactivera l'authentification de sécurité KRB4. Actuellement, l'authentification de sécurité KRB4 ne peut être utilisée que pour la transmission FTP.
CURLOPT_POSTFIELDS Toutes les données sont envoyées à l'aide de l'opération "POST" dans le protocole HTTP. Pour envoyer un fichier, préfixez le nom du fichier avec @ et utilisez le chemin complet. Ce paramètre peut être transmis via une chaîne codée en urlen comme 'para1=val1¶2=val2&...' ou en utilisant un tableau avec le nom du champ comme clé et les données du champ comme valeur. Si value est un tableau, l'en-tête Content-Type sera défini sur multipart/form-data.
CURLOPT_PROXY Canal proxy HTTP.
CURLOPT_PROXYUSERPWD A "[nom d'utilisateur] :[mot de passe]" chaîne de formatage.
CURLOPT_RANDOM_FILE Un nom de fichier utilisé pour générer des graines de nombres aléatoires SSL.
CURLOPT_RANGE sous la forme de "X-Y", où X et Y est la plage de données facultatives obtenues, mesurée en octets. Le fil de transfert HTTP prend également en charge plusieurs doublons de ce type séparés par des virgules tels que "X-Y,N-M".
CURLOPT_REFERER Dans l'en-tête de la requête HTTP "Référent : " contenu .
CURLOPT_SSL_CIPHER_LIST Une liste d'algorithmes de cryptage SSL. Par exemple, RC4-SHA et TLSv1 sont toutes deux des listes de chiffrement disponibles.
CURLOPT_SSLCERT Un nom de fichier contenant un certificat au format PEM.
CURLOPT_SSLCERTPASSWD Mot de passe requis pour utiliser le certificat CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE Le type de certificat. Les formats pris en charge sont "PEM" (par défaut), "DER" et "ENG". a été ajouté dans cURL 7.9.3.
CURLOPT_SSLENGINE Variable du moteur de cryptographie utilisée pour la clé privée SSL spécifiée dans CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT Variable utilisée pour les opérations de chiffrement asymétrique.
CURLOPT_SSLKEY Le nom du fichier contenant la clé privée SSL.
CURLOPT_SSLKEYPASSWD

SSL spécifié dans CURLOPT_SSLKEY Le mot de passe pour la clé privée.

Remarque :

Étant donné que cette option contient des informations de mot de passe sensibles, n'oubliez pas de conserver ce script PHP en sécurité.


CURLOPT_SSLKEYTYPE CURLOPT_SSLKEY Le type de cryptage de la clé privée. Les types de clés pris en charge sont "PEM"(valeur par défaut), "DER" et "ENG".
CURLOPT_URL L'adresse URL qui doit être obtenue peut également être obtenue dans curl_init()Défini en fonction.
CURLOPT_USERAGENT Inclure un "User-Agent : "Chaîne d'en-tête.
CURLOPT_USERPWD "[nom d'utilisateur] :[mot de passe]".
Pour les paramètres facultatifs des options suivantes, la valeur doit être définie sur un tableau :

Options FacultatifvaleurValeur Remarques
选项 可选value 备注
CURLOPT_HTTP200ALIASES 200响应码数组,数组中的响应吗被认为是正确的响应,否则被认为是错误的。 在cURL 7.10.3中被加入。
CURLOPT_HTTPHEADER 一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置:                       array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTE 在FTP请求执行完成后,在服务器上执行的一组FTP命令。
CURLOPT_QUOTE 一组先于FTP请求的在服务器上执行的FTP命令。
CURLOPT_HTTP200ALIASESTableau de 200 codes de réponse, les réponses du tableau sont-elles considérées comme correctes ? sinon, cela est considéré comme une erreur. a été ajouté dans cURL 7.10.3. CURLOPT_HTTPHEADERUn tableau utilisé pour définir les champs d'en-tête HTTP. Utilisez un tableau de la forme suivante pour définir :                         array('Type de contenu : texte/plain', 'Longueur du contenu : 100')CURLOPT_POSTQUOTEUn ensemble de commandes FTP exécutées sur le serveur après l'exécution de la requête FTP. CURLOPT_QUOTEUn ensemble de commandes FTP à exécuter sur le serveur avant la requête FTP.

Pour les paramètres facultatifs des options suivantes, la valeur doit être définie sur une ressource de flux (par exemple, en utilisant fopen()) :

选项 可选value
CURLOPT_FILE 设置输出文件的位置,值是一个资源类型,默认为STDOUT (浏览器)。
CURLOPT_INFILE 在上传文件的时候需要读取的文件地址,值是一个资源类型。
CURLOPT_STDERR 设置一个错误输出地址,值是一个资源类型,取代默认的STDERR
CURLOPT_WRITEHEADER 设置header部分内容的写入的文件地址,值是一个资源类型。

Pour les paramètres facultatifs des options suivantes, la valeur doit be Définir comme nom de fonction de rappel :

选项 可选value
CURLOPT_HEADERFUNCTION 设置一个回调函数,这个函数有两个参数,第一个是cURL的资源句柄,第二个是输出的header数据。header数据的输出必须依赖这个函数,返回已写入的数据大小。
CURLOPT_PASSWDFUNCTION 设置一个回调函数,有三个参数,第一个是cURL的资源句柄,第二个是一个密码提示符,第三个参数是密码长度允许的最大值。返回密码的值。
CURLOPT_PROGRESSFUNCTION 设置一个回调函数,有三个参数,第一个是cURL的资源句柄,第二个是一个文件描述符资源,第三个是长度。返回包含的数据。
CURLOPT_READFUNCTION 回调函数名。该函数应接受三个参数。第一个是 cURL resource;第二个是通过选项 CURLOPT_INFILE 传给 cURL 的 stream resource;第三个参数是最大可以读取的数据的数量。回 调函数必须返回一个字符串,长度小于或等于请求的数据量(第三个参数)。一般从传入的 stream resource 读取。返回空字符串作为 EOF(文件结束) 信号。
CURLOPT_WRITEFUNCTION 回调函数名。该函数应接受两个参数。第一个是 cURL resource;第二个是要写入的数据字符串。数 据必须在函数中被保存。函数必须返回准确的传入的要写入数据的字节数,否则传输会被一个错误所中 断。

Valeur de retour

Renvoie VRAI en cas de succès ou renvoie FAUX en cas d'échec.


Journal de mise à jour

版本 说明
5.2.10 引入 CURLOPT_PROTOCOLS, and        CURLOPT_REDIR_PROTOCOLS.
5.1.0 引入 CURLOPT_AUTOREFERER,        CURLOPT_BINARYTRANSFER,        CURLOPT_FTPSSLAUTH,        CURLOPT_PROXYAUTH, and        CURLOPT_TIMECONDITION.
5.0.0 引入 CURLOPT_FTP_USE_EPRT,        CURLOPT_NOSIGNAL,        CURLOPT_UNRESTRICTED_AUTH,        CURLOPT_BUFFERSIZE,        CURLOPT_HTTPAUTH,        CURLOPT_PROXYPORT,        CURLOPT_PROXYTYPE,        CURLOPT_SSLCERTTYPE, and        CURLOPT_HTTP200ALIASES.

实例

初始化一个新的cURL会话并获取一个网页

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

//关闭cURL资源,并且释放系统资源
curl_close($ch);
?>

上传文件实例:

<?php

/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array(&#39;name&#39; => &#39;Foo&#39;, &#39;file&#39; => &#39;@/home/user/test.png&#39;);

curl_setopt($ch, CURLOPT_URL, &#39;http://localhost/upload.php&#39;);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);
?>

以上实例输出结果如下:

Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [name] => test.png
            [type] => image/png
            [tmp_name] => /tmp/phpcpjNeQ
            [error] => 0
            [size] => 279
        )

)

注释

传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。

推荐学习:《PHP视频教程