PHP使用CURL上传|下载文件
CURL下载文件
/** * @param string $img_url 下载文件地址 * @param string $save_path 下载文件保存目录 * @param string $filename 下载文件保存名称 * @return bool */function curlDownFile($img_url, $save_path = '', $filename = '') { if (trim($img_url) == '') { return false; } if (trim($save_path) == '') { $save_path = './'; } //创建保存目录 if (!file_exists($save_path) && !mkdir($save_path, 0777, true)) { return false; } if (trim($filename) == '') { $img_ext = strrchr($img_url, '.'); $img_exts = array('.gif', '.jpg', '.png'); if (!in_array($img_ext, $img_exts)) { return false; } $filename = time() . $img_ext; } // curl下载文件 $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $img_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $img = curl_exec($ch); curl_close($ch); // 保存文件到制定路径 file_put_contents($filename, $img); unset($img, $url); return true;}// 执行函数之后,会在当前文件的同一目录下生成下载好的图片curlDownFile('http://mimg.127.net/logo/163logo.gif');
CURL上传文件
1.PHP5.5之前使用CURL上传文件
第一种写法,PHP版本要求 < 5.5
$filename 是文件路径,必须有
filename=test.txt 是接收方收到的文件名,为空时 则取 filename 文件路径中的 basename部分
type=text/plain 文档类型,可以为空
/** * @param string $target_url 上传目标地址 * @param string $filename 上传文件路径 * @param string $form_name 表单名称 */function curlUploadFile($target_url, $filename, $form_name) { $post_data = array( $form_name => "@$filename;filename=test.txt;type=text/plain", ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $target_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch);}$target_url = 'http://www.codean.net/notFound/test.php';$filename = realpath("C:/Users/HelloWorld/Desktop/Images/1.jpg");$form_name = 'file';// 接收端使用$_FILES接受curlUploadFile($target_url, $filename, $form_name);
2.PHP5.5之后使用CURL上传文件
第二种写法(推荐),PHP版本 >= 5.5
filename 需要上传的文件,建议使用绝对路径
mimetype: 默认是 application/octet-stream,此处留空
postname: 接收方$_FILES数组中的文件名,默认为文件名
/** * @param string $target_url 上传目标地址 * @param string $filename 上传文件路径 * @param string $form_name 表单名称 */function curlUploadFile($target_url, $filename, $form_name) { $upload_file = new CURLFile($filename); $post_data = array( $form_name => $upload_file ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $target_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch);}$target_url = 'http://www.codean.net/notFound/test.php';$filename = realpath("C:/Users/HelloWorld/Desktop/Images/1.jpg");$form_name = 'file';// 接收端使用$_FILES接受curlUploadFile($target_url, $filename, $form_name);
3.PHP发送文件流上传文件
/* * 第三种写法,使用PHP流发送 * @param string $target_url 上传目标地址 */function curlUploadFile($target_url) { $fh = fopen('php://temp', 'rw+'); $string = 'Hello World'; fwrite($fh, $string); rewind($fh); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $target_url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_PUT, true); curl_setopt($ch, CURLOPT_INFILE, $fh); curl_setopt($ch, CURLOPT_INFILESIZE, strlen($string)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch);}$target_url = 'http://www.codean.net/notFound/test.php';curlUploadFile($target_url);// 接收端取出流文件并保存$putdata = fopen('php://input', 'r');$fp = fopen('test.txt', 'w');while ($data = fread($putdata, 1024)) { fwrite($fp, $data);}fclose($fp);fclose($putdata);
4.HTTP报文方式上传文件
/** * @param string $target_url 文件上传地址 */function curlUploadFile($target_url) { // 生成分隔符 $delimiter = '-------------' . uniqid(); // 需要上传的文件数组 $fileFields = array( 'file' => array( 'name' => 'test.png', 'type' => 'text/html', 'content' => 'This is my file content.' ), ); // 后端接受的$_POST的数组值 $postFields = array( 'file' => 'file', ); $data = ''; // 先将post的普通数据生成主体字符串 foreach ($postFields as $name => $content) { $data .= "--" . $delimiter . "\r\n"; $data .= 'Content-Disposition: form-data; name="' . $name . '"'; $data .= "\r\n\r\n" . $content . "\r\n"; } // 将上传的文件生成主体字符串 foreach ($fileFields as $name => $file) { $data .= "--" . $delimiter . "\r\n"; $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n"; $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n"; $data .= $file['content'] . "\r\n"; } // 主体结束的分隔符 $data .= "--" . $delimiter . "--"; // curl上传文件 $handle = curl_init($target_url); curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_HTTPHEADER, array( 'Content-Type: multipart/form-data; boundary=' . $delimiter, 'Content-Length: ' . strlen($data)) ); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($handle, CURLOPT_POSTFIELDS, $data); $result = curl_exec($handle); curl_close($handle);}

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Alipay Php ...

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.
