PHP cURL 檔案上傳
本教程將指導如何使用 cURL 和 CURLFile
類將影象檔案傳送到伺服器。
這個想法是將影象檔案從一個頁面釋出到另一個頁面上的另一個頁面。
Index.php
:首先,我們將檔案image
傳送到index.php
。其次,我們將檔案重定向到curl.php
。Curl.php
:之後,我們使用cURLFile class
將其移動到上傳資料夾。
PHP 中的 cURLFile
上傳方法
例如,我們將影象釋出到 index.php
頁面,然後在 curl 的幫助下發布到 curl.php
頁面。
我們通過使用 curl 和 CURLFile
類功能來做到這一點。讓我們以有效的語法檢視函式引數。
//create curl file
if (function_exists('curl_file_create')) {
//determine file path
$tmp_file = curl_file_create($file_name_with_full_path);
} else { //
$tmp_file = '@' . realpath($file_name_with_full_path);
}
//store data in an array index
$data = array('extra_info' => '123456789','file_contents'=> $tmp_file);
$init = curl_init();
//function parameteres
curl_setopt($init, CURLOPT_URL,$url);
curl_setopt($init, CURLOPT_POST,1);
curl_setopt($init, CURLOPT_POSTFIELDS, $data);
$res=curl_exec ($init);
curl_close ($init);
上面的示例可以取決於使用者定義的條件,因為 URL 可以指向任何伺服器位置。
但是,我們現在將建立一個可用於在伺服器之間移動檔案的工作示例。它將允許你闡明如何使用 curl 檔案類。
<!DOCTYPE html>
<html>
<body>
<form action="index.php" method="post" enctype="multipart/form-data" align="center">
<input type="file" name="image" />
<input type="submit" value= "Submit">
</form>
</body>
</html>
通常情況下,HTML 表單收集輸入檔名並與 php.ini 中的 $_POST 或 $_REQUEST
變數一起傳送。
但是,藉助 curl 檔案功能,我們可以將其重定向到不同的伺服器。
curl.php
而不是其他伺服器,因為我們在本地主機上,但它可以在任何遠端伺服器上。PHP cURL 檔案上傳工作示例
index.php
:
<?php
if (isset($_FILES['image']['tmp_name'])){
//create a handler for curl function
$curl = curl_init(); //initialzie cURL session
//The CURLFile class
$cfile = new CURLFile($_FILES['image']['tmp_name'], $_FILES['image']['type'], $_FILES['image']['name']);
//use array to post data to different server or within localhost
$data = array ("myimage"=>$cfile);
//this url can be directed to any server location
//for the sake of this demo, we are using localhost directory to upload images in the upload folder
//Sets an option on the given cURL session handle
curl_setopt($curl, CURLOPT_URL, "http://localhost:7882/curl/curl.php");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//assign execute curl to a response varible
$result = curl_exec($curl);
//check if the response varible is true
if($result == true){
echo "Your image has been uploaded successfully";
}
else {
// curl error returns a string comprising of error for the current session
echo "Error!" . curl_error($curl);
}
}
?>
輸出:
output.gif
影象顯示檔案目錄以及檔案如何從 index.php
移動到 curl.php
。然後移動到上傳資料夾。
Curl.php
程式碼:
<?php
//determine the array index
if(isset($_FILES['myimage']['tmp_name'])){
//set the path in the path variable
$path = "uploads/" . $_FILES['myimage']['name'];
//move the file to the path
move_uploaded_file($_FILES['myimage']['tmp_name'], $path);
?>
まとめ
我們已經展示了檔案和我們如何從一臺伺服器到另一臺伺服器執行 CURLFile
類的輸出。
使用者可以在需要在不同伺服器位置上傳檔案的各種情況下使用此方法。
Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.
LinkedIn