PHP 檔案上傳
阿新 • • 發佈:2018-12-14
PHP 基礎
這裡教大家一個PHP檔案上傳的方法,並返回網路檔案的位置
操作環境
- 作業系統:Win7
- 伺服器工具: XAMPP
直接上原始碼,後面寫寫使用的方法
/** * 上傳檔案的方法 * 第一個引數 要過濾的資料型別 必須是陣列 * 第二個引數 前端上傳時用的 name 名稱 例:<input type='file' name='file'>為例 * 第三個引數 檔案上傳後要存放的位置 以呼叫該方法的檔案為基礎 * 第四個引數 設定一個檔名稱 $_FILES[$postname]["name"] 這個名稱就是上傳檔案的名稱,建議修改 * 第五個引數 設定要上傳檔案的大小 預設 2M * 第六個引數 上傳了檔案後需要一個檔案在網路上的地址 最後 / 不能省略 */ function uploadFile($arrayinfo){ $status = 0; $msg = ""; $data = null; // 六個引數 預設值 $init = array( 'filter'=>array(), // 過濾型別,預設不過濾 'postname'=>'file', // 前臺上傳的name名稱 'filedir'=>'./uploads/', // 要上傳的資料夾 'filename'=>$_FILES['file']["name"], // 要上傳的檔名 'filesize'=>1024*1024*2, // 上傳檔案的大小上限 'url'=>'https://www.xialijun.top/', // 預設網路圖片地址 ); // 後面的覆蓋前面的 修改一下引數 $init = array_merge($init,$arrayinfo); // 開始過濾 $filter = in_array($_FILES[$init['postname']]["type"],$init['filter']); if($filter && ($_FILES[$init['postname']]["size"] < $init['filesize']) ){ if($_FILES[$init['postname']]["error"]>0){ switch ($_FILES[$init['postname']]['error']) { case 1: $str = '上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值'; break; case 2: $str = '上傳的檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值'; break; case 3: $str = '檔案只有部分被上傳'; break; case 4: $str = '沒有檔案被上傳'; break; case 6: $str = '找不到臨時資料夾'; break; case 7: $str = '檔案寫入失敗'; break; } $msg = $str; } else{ // 返回檔案的字尾名 $suffix = explode('.', $_FILES[$init['postname']]["name"]); $suffix = $suffix[count($suffix)-1]; // 判斷檔案是否存在 if(file_exists($init['filedir'].$_FILES[$init['postname']]["name"])){ echo $_FILES[$init['postname']]["name"]." 上傳檔案已存在 "; } else{ // 上傳的檔案被移動到 指定位置 @move_uploaded_file($_FILES[$init['postname']]["tmp_name"],$init['filedir'].$init['filename'].".".$suffix); // 設定狀態證明檔案上傳成功 $status = 1; // 上傳成功的提示 $msg = "上傳成功"; // 返回檔案的網路地址 $data = $init['url'].$init['filename'].".".$suffix; } } } else{ $str =$_FILES[$init['postname']]["type"]." 上傳檔案有問題"; if(false){ $str = $_FILES[$init['postname']]["name"]." 不符合要求<br>"; $str .= "可能的情況是: <br>"; $str .= "1.檔案大於5M;<br>"; $str .= "2.檔案的型別不符合要求 當前的型別是: ".$_FILES[$init['postname']]["type"].";<br>"; $str .= "支援的型別有:<br>"; foreach ($init['filter'] as $value) { $str .= $value."<br>"; } } $msg = $str; } return array('status'=>$status,'msg'=>$msg,'data'=>$data); }
使用方法
/** * 這裡就是把上傳的引數設定好後傳入 上面的方法中 */ $init = array( 'filter'=>array('image/jpeg'), // 過濾型別,預設不過濾 'postname'=>'p', // 前臺上傳的name名稱 'filedir'=>'../uploads/', // 要上傳的資料夾 'filename'=>time().'_'.rand(10000,99999), // 要上傳的檔名 'url'=>'http://127.0.0.1/uploads/', // 預設網路圖片地址 ); // 開始上傳檔案 $res = uploadFile($init); // 上傳完成後,檢視上傳的是否正確 var_dump($res);
感謝檢視,多關注,多評論,謝謝!!
PHP 基礎
這裡教大家一個PHP檔案上傳的方法,並返回網路檔案的位置
操作環境
- 作業系統:Win7
- 伺服器工具: XAMPP
直接上原始碼,後面寫寫使用的方法
/** * 上傳檔案的方法 * 第一個引數 要過濾的資料型別 必須是陣列 * 第二個引數 前端上傳時用的 name 名稱 例:<input type='file' name='file'>為例 * 第三個引數 檔案上傳後要存放的位置 以呼叫該方法的檔案為基礎 * 第四個引數 設定一個檔名稱 $_FILES[$postname]["name"] 這個名稱就是上傳檔案的名稱,建議修改 * 第五個引數 設定要上傳檔案的大小 預設 2M * 第六個引數 上傳了檔案後需要一個檔案在網路上的地址 最後 / 不能省略 */ function uploadFile($arrayinfo){ $status = 0; $msg = ""; $data = null; // 六個引數 預設值 $init = array( 'filter'=>array(), // 過濾型別,預設不過濾 'postname'=>'file', // 前臺上傳的name名稱 'filedir'=>'./uploads/', // 要上傳的資料夾 'filename'=>$_FILES['file']["name"], // 要上傳的檔名 'filesize'=>1024*1024*2, // 上傳檔案的大小上限 'url'=>'https://www.xialijun.top/', // 預設網路圖片地址 ); // 後面的覆蓋前面的 修改一下引數 $init = array_merge($init,$arrayinfo); // 開始過濾 $filter = in_array($_FILES[$init['postname']]["type"],$init['filter']); if($filter && ($_FILES[$init['postname']]["size"] < $init['filesize']) ){ if($_FILES[$init['postname']]["error"]>0){ switch ($_FILES[$init['postname']]['error']) { case 1: $str = '上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值'; break; case 2: $str = '上傳的檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值'; break; case 3: $str = '檔案只有部分被上傳'; break; case 4: $str = '沒有檔案被上傳'; break; case 6: $str = '找不到臨時資料夾'; break; case 7: $str = '檔案寫入失敗'; break; } $msg = $str; } else{ // 返回檔案的字尾名 $suffix = explode('.', $_FILES[$init['postname']]["name"]); $suffix = $suffix[count($suffix)-1]; // 判斷檔案是否存在 if(file_exists($init['filedir'].$_FILES[$init['postname']]["name"])){ echo $_FILES[$init['postname']]["name"]." 上傳檔案已存在 "; } else{ // 上傳的檔案被移動到 指定位置 @move_uploaded_file($_FILES[$init['postname']]["tmp_name"],$init['filedir'].$init['filename'].".".$suffix); // 設定狀態證明檔案上傳成功 $status = 1; // 上傳成功的提示 $msg = "上傳成功"; // 返回檔案的網路地址 $data = $init['url'].$init['filename'].".".$suffix; } } } else{ $str =$_FILES[$init['postname']]["type"]." 上傳檔案有問題"; if(false){ $str = $_FILES[$init['postname']]["name"]." 不符合要求<br>"; $str .= "可能的情況是: <br>"; $str .= "1.檔案大於5M;<br>"; $str .= "2.檔案的型別不符合要求 當前的型別是: ".$_FILES[$init['postname']]["type"].";<br>"; $str .= "支援的型別有:<br>"; foreach ($init['filter'] as $value) { $str .= $value."<br>"; } } $msg = $str; } return array('status'=>$status,'msg'=>$msg,'data'=>$data); }
使用方法
/**
* 這裡就是把上傳的引數設定好後傳入 上面的方法中
*/
$init = array(
'filter'=>array('image/jpeg'), // 過濾型別,預設不過濾
'postname'=>'p', // 前臺上傳的name名稱
'filedir'=>'../uploads/', // 要上傳的資料夾
'filename'=>time().'_'.rand(10000,99999), // 要上傳的檔名
'url'=>'http://127.0.0.1/uploads/', // 預設網路圖片地址
);
// 開始上傳檔案
$res = uploadFile($init);
// 上傳完成後,檢視上傳的是否正確
var_dump($res);