PHP cURL 檔案上傳

Sarwan Soomro 2023年1月30日
  1. PHP 中的 cURLFile 上傳方法
  2. PHP cURL 檔案上傳工作示例
  3. まとめ
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);
}
}
?>

輸出:

PHP 捲曲輸出

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
Sarwan Soomro avatar Sarwan Soomro avatar

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