今天,遇到一個服務端接收客戶端上傳圖片的需求,經過學習。我寫了個簡單的demo
以備下次學習。
首先服務器接收的發送圖片的請求一定要是post請求,而且請求一定要加上 enctype="multipart/form-data" 缺一不可
下面是例子,寫個簡單的瀏覽器端的:
<html> <head> <title> Upload file example. </title> </head> <body> <form method="post" action="recpic.php" enctype="multipart/form-data"> <table border=0 cellspacing=0 cellpadding=0 align=center width="100%"> <tr> <td width=55 height=20 align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000">文件: </TD> <td height="16"> <input name="file" type="file" /> <!--這里指定了上傳后所在臨時數組的名稱--> <input type="submit" name="submit" value="Submit" /> </td> </tr> </table> </form> </body> </html>
<?php /** * 接收上傳的圖片 * * ------------ * 200 ok * 401 Error method * 500 Internal error * ------------ */ require_once("../inc/connect_db.php"); require_once("../response.php"); header('Access-Control-Allow-Origin: *'); // 解決前段javascript跨域請求 //print_r($_FILES); $filename = $_FILES['file']['name']; $tmp_name = $_FILES['file']['tmp_name']; //將服務器上的臨時文件移動到指定目錄下 //使用該方法move_uploaded_file($tmp_name , $destination) move_uploaded_file($tmp_name , "../files/".$filename); echo $filename; exit();
上文有注釋不贅述,這里還搜集了一些關於上傳文件$_FILES()的重要方法:
$_FILES['myFile']['name'] 顯示客戶端文件的原名稱。 $_FILES['myFile']['type'] 文件的 MIME 類型,例如"image/gif"。 $_FILES['myFile']['size'] 已上傳文件的大小,單位為字節。 $_FILES['myFile']['tmp_name'] 儲存的臨時文件名,一般是系統默認。 $_FILES['myFile']['error'] 該文件上傳相關的錯誤代碼。以下為不同代碼代表的意思: 0; 文件上傳成功。 1; 超過了文件大小php.ini中即系統設定的大小。 2; 超過了文件大小MAX_FILE_SIZE 選項指定的值。 3; 文件只有部分被上傳。 4; 沒有文件被上傳。 5; 上傳文件大小為0。