php curl 上傳文件

KelDandridg 8年前發布 | 2K 次閱讀 PHP

假設server端上傳文件處理腳本upload.php:

<?php

print_r($_POST); print_r($_FILES);</pre>

1、使用 CURL 默認的方法

//如果php文件是utf8編碼,系統是GBK編碼,那么就需要轉下編碼,要不然Php在系統中找不到這個文件
$file = realpath(mb_convert_encoding('測試圖片.JPG','GBK','utf8'));

$file = realpath('temp.jpg'); //要上傳的文件
$fields['f'] = '@'.$file; // 前面加@符表示上傳圖片

$ch =curl_init();

curl_setopt($ch,CURLOPT_URL,'http://localhost/upload.php');

curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

$content = curl_exec($ch);

echo $content;</pre>


2、 另類的做法,有時我們需要將動態產生的內容當做文件上傳到遠程服務器,卻又不想在本地服務器中構建臨時文件。這樣就有了這個另類的寫法

$contents =<<< 'TEXT'
這里是文件內容,也可以是圖片二進制,圖片需要修改上傳文件類型
TEXT;

$varname = 'my';//上傳到$_FILES數組中的 key $name = '3.txt';//文件名 $type = 'text/plain';//文件類型

$key = "$varname\"; filename=\"$name\r\nContent-Type: $type\r\n"; $fields[$key] = $contents;

$ch =curl_init();

curl_setopt($ch,CURLOPT_URL,'http://localhost/upload.php');

curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

$content = curl_exec($ch);

echo $content;</pre>

 本文由用戶 KelDandridg 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!