您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP中upload.php的具體使用方法”,在日常操作中,相信很多人在PHP中upload.php的具體使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中upload.php的具體使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
我們今天為大家帶來的是關于PHP上傳類upload.php 的具體用法,希望廣大讀者朋友能夠通過本文所介紹的內容得到幫助,增加我們的知識點。
具體代碼如下:
<?php /** * 我的文件上傳類 * * 未完成的功能: * 1.對目標目錄是否存在的判斷 * 2.如果上傳時出現重名,自動重命名 * * @author M.Q. <[url]www.mengqi.net[/url]> */ class upload { /** * PHP上傳類upload.php上傳文件的信息,此值由構造函數取得,如果上傳文件失敗或出錯或未上傳,則此值為false * * @var array */ private $file = false; /** * 構造函數:取得上傳文件的信息 * * 如果在上傳文件的工程中發生錯誤,那么出錯的文件不會放在結果中返回,結果中的文件都是可用的 * * @param string $tag form表單中<input>標簽中name屬性的值,例<input name="p" type="file"> * * 例1,上傳單個文件: * <input name="upfile" type="file"> * * 例2,上傳多個文件: * <input name="upfile[]" type="file"> * <input name="upfile[]" type="file"> * * 結果(保存在$file變量中)如下: * * array( * [0] => array( * 'name' => 'abc.txt' * 'type' => 'text/plain’ * 'tmp_name' => '/tmp/phpgxecCb' * 'error' => 0 * 'size' => 62 * ) * [1] => array( * 'name' => 'abc.txt' * 'type' => 'text/plain’ * 'tmp_name' => '/tmp/phpgxecCb' * 'error' => 0 * 'size' => 62 * ) * ) */ public function __construct($tag) { $file = $_FILES[$tag]; if (!isset($file) || empty($file)) { return; //沒有上傳文件 } $num = count($file['name']); //PHP上傳類upload.php上傳文件的個數 $data = array(); //用來保存上傳文件的信息的數組 //上傳了多個文件 if ($num > 1) { for($i = 0; $i < $num; $i++) { $d = array(); $d['name'] = $file['name'][$i]; $d['type'] = $file['type'][$i]; $d['tmp_name'] = $file['tmp_name'][$i]; $d['error'] = $file['error'][$i]; $d['size'] = $file['size'][$i]; if ($d['error'] == 0) { $data[] = $d; } else { @unlink($d['tmp_name']); } } } //只上傳了一個文件 else { $d = array(); $d['name'] = $file['name']; $d['type'] = $file['type']; $d['tmp_name'] = $file['tmp_name']; $d['error'] = $file['error']; $d['size'] = $file['size']; if ($d['error'] == 0) { $data[] = $d; } else { @unlink($d['tmp_name']); } } if (empty($data)) return; $this -> file = $data; //保存上傳文件的信息 } /** * 將上傳的文件從臨時文件夾移動到目標路徑 * * @param array $src 文件信息數組,是$file數組的其中一個元素(仍然是數組) * @param string $destpath 上傳的目標路徑 * @param string $filename 上傳后的文件名,如果為空,則使用上傳時的文件名 * @return bool */ public function save($src, $destpath, $filename = null) { $srcTName = $src['tmp_name']; //原始上傳文件的臨時文件名 $srcFName = $src['name']; //原始文件名 //如果$filename參數為空,則使用上傳時的文件名 if (empty($filename)) { $filename = $srcFName; } //$dest是文件最終要復制到的路徑和文件名 if (empty($destpath)) { $dest = $filename; } else { //修正路徑中的斜杠,將末尾的\修改為/,如果末尾不是\也不是/,則給末尾添加一個/ $pathend = $destpath[strlen($destpath) - 1]; //上傳的目標路徑的***一個字符 if ($pathend == '\\') { $dest = substr_replace($destpath, '/', strlen($destpath)-1).$filename; } else if ($pathend != '/') { $dest = $destpath.'/'.$filename; } else { $dest = $destpath.$filename; } } //上傳文件成功 if (@move_uploaded_file($srcTName, $dest)) { return true; } else { return false; } } /** * 取得上傳文件的信息 * * @return array */ public function getFileInfo() { return $this->file; } } $a = new upload('upfile'); $fileinfo = $a -> getFileInfo(); if ($fileinfo == false) { echo '沒有上傳文件!'; exit; } for($i = 0; $i < count($fileinfo); $i++) { echo '正在上傳 '.$fileinfo[$i]['name'].' '; if ($a -> save($fileinfo[$i], 'upload')) echo '完畢'; else echo '失敗'; echo '<br>'; } ?>
到此,關于“PHP中upload.php的具體使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。