HP 文件上傳:示例代碼和心得
示例代碼:
```php
if(isset($_POST['submit'])){
$file = $_FILES['file'];
// 文件信息
$fileName = $file['name'];
$fileTmpName = $file['tmp_name'];
$fileSize = $file['size'];
$fileError = $file['error'];
// 獲取文件擴展名
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
// 允許上傳的文件類型
$allowedExtensions = array("jpg", "jpeg", "png");
// 檢查文件類型是否允許上傳
if(in_array($fileExt, $allowedExtensions)){
// 檢查文件是否上傳成功
if($fileError === 0){
// 檢查文件大小
if($fileSize < 5000000){
// 生成新的文件名
$newFileName = uniqid('', true) . "." . $fileExt;
// 文件上傳目錄
$uploadPath = "uploads/" . $newFileName;
// 將文件移動到指定目錄
move_uploaded_file($fileTmpName, $uploadPath);
echo "文件上傳成功!";
} else {
echo "文件太大,請上傳小于5MB的文件。";
}
} else {
echo "文件上傳失敗。";
}
} else {
echo "不支持上傳該類型的文件。";
}
}
```
使用心得:
在PHP開發(fā)中,文件上傳是一個常見的功能。通過文件上傳,用戶可以將文件從本地計算機上傳到服務(wù)器上。PHP提供了相應(yīng)的函數(shù)和方法來處理文件上傳。
在示例代碼中,我們演示了一個簡單的文件上傳功能。首先,我們通過$_FILES數(shù)組獲取上傳的文件信息。然后,我們檢查文件類型是否允許上傳,通過in_array()函數(shù)判斷文件擴展名是否在允許的范圍內(nèi)。接著,我們檢查文件是否上傳成功,通過$fileError變量判斷是否有錯誤發(fā)生。最后,我們檢查文件大小是否符合要求,如果符合要求,我們生成一個新的文件名,將文件移動到指定的上傳目錄。
在開發(fā)文件上傳功能時,需要注意以下幾點:
- 在HTML表單中,要使用enctype="multipart/form-data"屬性來指定表單可以上傳文件。
- 在PHP代碼中,要使用$_FILES數(shù)組來獲取上傳的文件信息。
- 在處理文件上傳時,要對文件類型、文件大小和文件路徑進行檢查,以確保安全性和可靠性。
- 在文件上傳過程中,要注意文件權(quán)限的設(shè)置,確保上傳目錄具有寫入權(quán)限。
- 在處理上傳的文件時,要注意防止文件名沖突,可以使用唯一的文件名來避免這個問題。
文件上傳是一個常見的功能,但也容易出現(xiàn)各種問題。在開發(fā)過程中,我遇到過一些問題,例如文件上傳失敗、文件保存路徑錯誤等。通過仔細(xì)檢查代碼和調(diào)試,我成功解決了這些問題,并幫助別人解決了類似的bug。
總之,文件上傳是一個常見且有用的功能,在PHP中處理文件上傳可以變得簡單和高效。熟練掌握文件上傳的相關(guān)函數(shù)和方法,能夠更好地滿足用戶的需求。
(注:以上內(nèi)容為筆記,非官方文檔)
我是永不低頭的熊,喜歡美食、健身,當(dāng)然也喜歡寫代碼,每天不定時更新各類編程相關(guān)的文章,希望你在碼農(nóng)這條路上不再孤單!
<?php
date_default_timezone_set('PRC');
function unicodeDecode($unicode_str){
$json = '{"str":"'.$unicode_str.'"}';
$arr = json_decode($json,true);
if(empty($arr)) return '';
return $arr['str'];
}
function do_post($url, $param,$token,$cookie) {
$ch = curl_init();//初始化curl
//$this_header = array("Content-Type: multipart/form-data");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($param),$token)
);
curl_setopt($ch, CURLOPT_URL,$url);//抓取指定網(wǎng)頁
//curl_setopt($ch, CURLOPT_HEADER,$this_header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//執(zhí)行后直接打印出來,方便調(diào)試
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
//curl_setopt($ch, CURLOPT_TIMEOUT,2);//請求超時10s
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 跳過證書檢查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);// 不從證書中檢查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
$data = curl_exec($ch);//運行curl
curl_close($ch);
return $data;
}
function ArrayToExcel($arr,$name)
{
require_once 'PHPExcel.php';
//實例化
$objPHPExcel = new PHPExcel();
/*右鍵屬性所顯示的信息*/
$objPHPExcel->GETProperties()->setCreator("xuan") //作者
->setLastModifiedBy("xuan") //最后一次保存者
->setTitle('數(shù)據(jù)EXCEL導(dǎo)出') //標(biāo)題
->setSubject('數(shù)據(jù)EXCEL導(dǎo)出') //主題
->setDescription('導(dǎo)出數(shù)據(jù)') //描述
->setKeywords("excel") //標(biāo)記
->setCategory("result file"); //類別
//設(shè)置當(dāng)前的表格
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);#設(shè)置單元格寬度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(8);
// 設(shè)置表格第一行顯示內(nèi)容
$objPHPExcel->GETActiveSheet()
->setCellValue('A1','所在黨支部')
->setCellValue('B1','姓名')
->setCellValue('C1','性別')
->setCellValue('D1','身份證號')
->setCellValue('E1','聯(lián)系方式');
$key = 1;
/*以下就是對處理Excel里的數(shù)據(jù),橫著取數(shù)據(jù)*/
foreach($arr as $v){
//設(shè)置循環(huán)從第二行開始
$key++;
//Excel的第A列,name是你查出數(shù)組的鍵值字段,下面以此類推->setCellValue('F'.$key,$v['d1Name'])
if($v['a01004']=='1')
{
$sex='男';
}
else
{
$sex='女';
}
$objPHPExcel->GETActiveSheet()
->setCellValue('A'.$key,$v['orgName'])
->setCellValue('B'.$key,$v['a01001'])
->setCellValue('C'.$key,$v['a01004'])
->setCellValue('D'.$key,$v['a01085'])
->setCellValue('E'.$key,$v['a37017']);
}
//設(shè)置當(dāng)前的表格
$objPHPExcel->GETDefaultStyle()->GETAlignment() //設(shè)置居中顯示
->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)//垂直居中
->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//水平居中
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean(); //清除緩沖區(qū),避免亂碼
header('Content-Type: application/vnd.ms-excel'); //文件類型
header('Content-Disposition: attachment;filename="'.$name.'.xls"'); //文件名
header('Cache-Control: max-age=0');
header('Content-Type: text/html; charset=utf-8'); //編碼
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel 2003
$objWriter->save('php://output');
exit;
}
if(isset($_GET['name']) and $_GET['name']!=null)
{
$name=$_GET['name'];
$datas=array();
$token=$_GET['token'];
$ss=$_GET['token'];
$cookie=$_GET['cookie'];
$headers=array($ss);
$param='{"pagesize":2000,"pagenum":0,"orgCode":"000002000008000008000009000005","conditions":[],"orgId":"16e53e4f-b521-413a-ba07-37745245bd55","orgType":"611"}';
$url='http://10.243.19.81:7710/api/imis/mainQuery';
$jsondata=do_post($url, $param,$token,$cookie);
//echo $jsondata;
$datas=json_decode($jsondata,true)['datalist'];
ArrayToExcel($datas,$name);
}
?>
<style>
#cookie{
width: 30%;
border: 1px solid #e2e2e2;
height: 40px;
padding:0 0 0 10px;
}
#header{
width: 69%;
border: 1px solid #e2e2e2;
height: 40px;
padding:0 0 0 10px;
}
#keywords{
width: 15%;
border: 1px solid #e2e2e2;
height: 40px;
padding:0 0 0 10px;
}
#search{
width: 10%;
border: 1px solid #e2e2e2;
height: 42px;
text-align: center;
line-height: 42px;
cursor: pointer;
}
</style>
<form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input id="keywords" type="search" name="name" placeholder="輸入文件名" spellcheck="false" value="<?php if(isset($_GET['name']))echo $_GET['name'];?>" autocomplete="off"/>
<input id="cookie" type="cookie" name="cookie" placeholder="cookie" spellcheck="false" value="<?php if(isset($_GET['cookie']))echo $_GET['cookie'];?>" autocomplete="off"/>
<input id="token" type="cookie" name="token" placeholder="Authorization" spellcheck="false" value="<?php if(isset($_GET['token']))echo $_GET['token'];?>" autocomplete="off"/>
<input id="search" type="submit" value="導(dǎo)出" name="導(dǎo)出"/>
</form>
到工具:PHPEXCEL類,百度可搜索下載
使用PHP編寫用戶登錄的代碼時,通常會涉及HTML表單來接收用戶名和密碼,然后使用PHP來處理這些輸入并驗證它們。以下是一個簡單的PHP用戶登錄示例,其中假設(shè)你已經(jīng)有了一個存儲用戶信息的MySQL數(shù)據(jù)庫。
首先,你需要一個HTML表單(`login.html`):
```
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。