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开发中,文件上传是一个常见的功能。通过文件上传,用户可以将文件从本地计算机上传到服务器上。PHP提供了相应的函数和方法来处理文件上传。
在示例代码中,我们演示了一个简单的文件上传功能。首先,我们通过$_FILES数组获取上传的文件信息。然后,我们检查文件类型是否允许上传,通过in_array()函数判断文件扩展名是否在允许的范围内。接着,我们检查文件是否上传成功,通过$fileError变量判断是否有错误发生。最后,我们检查文件大小是否符合要求,如果符合要求,我们生成一个新的文件名,将文件移动到指定的上传目录。
在开发文件上传功能时,需要注意以下几点:
- 在HTML表单中,要使用enctype="multipart/form-data"属性来指定表单可以上传文件。
- 在PHP代码中,要使用$_FILES数组来获取上传的文件信息。
- 在处理文件上传时,要对文件类型、文件大小和文件路径进行检查,以确保安全性和可靠性。
- 在文件上传过程中,要注意文件权限的设置,确保上传目录具有写入权限。
- 在处理上传的文件时,要注意防止文件名冲突,可以使用唯一的文件名来避免这个问题。
文件上传是一个常见的功能,但也容易出现各种问题。在开发过程中,我遇到过一些问题,例如文件上传失败、文件保存路径错误等。通过仔细检查代码和调试,我成功解决了这些问题,并帮助别人解决了类似的bug。
总之,文件上传是一个常见且有用的功能,在PHP中处理文件上传可以变得简单和高效。熟练掌握文件上传的相关函数和方法,能够更好地满足用户的需求。
(注:以上内容为笔记,非官方文档)
我是永不低头的熊,喜欢美食、健身,当然也喜欢写代码,每天不定时更新各类编程相关的文章,希望你在码农这条路上不再孤单!
<?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);//抓取指定网页
//curl_setopt($ch, CURLOPT_HEADER,$this_header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行后直接打印出来,方便调试
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('数据EXCEL导出') //标题
->setSubject('数据EXCEL导出') //主题
->setDescription('导出数据') //描述
->setKeywords("excel") //标记
->setCategory("result file"); //类别
//设置当前的表格
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);#设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(8);
// 设置表格第一行显示内容
$objPHPExcel->GETActiveSheet()
->setCellValue('A1','所在党支部')
->setCellValue('B1','姓名')
->setCellValue('C1','性别')
->setCellValue('D1','身份证号')
->setCellValue('E1','联系方式');
$key = 1;
/*以下就是对处理Excel里的数据,横着取数据*/
foreach($arr as $v){
//设置循环从第二行开始
$key++;
//Excel的第A列,name是你查出数组的键值字段,下面以此类推->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']);
}
//设置当前的表格
$objPHPExcel->GETDefaultStyle()->GETAlignment() //设置居中显示
->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)//垂直居中
->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//水平居中
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean(); //清除缓冲区,避免乱码
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="导出" name="导出"/>
</form>
到工具:PHPEXCEL类,百度可搜索下载
使用PHP编写用户登录的代码时,通常会涉及HTML表单来接收用户名和密码,然后使用PHP来处理这些输入并验证它们。以下是一个简单的PHP用户登录示例,其中假设你已经有了一个存储用户信息的MySQL数据库。
首先,你需要一个HTML表单(`login.html`):
```
*请认真填写需求信息,我们会在24小时内与您取得联系。