当前位置:网站首页>PHP文件上传小结(乱码,移动失败,权限,显示图片)
PHP文件上传小结(乱码,移动失败,权限,显示图片)
2022-06-30 19:49:00 【星哥玩云】
LAMP环境:
Linux Mint 16 32bits xfce
apache 2.4.6 Ubuntu
php 5.5.3
默认www是/var/www,我用符号连接到了/home/tony/www
然后修改sudo chmod 777 www
上传页面代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
<form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form>
</body> </html>
这个代码要加head指明字符集,下面的代码同理
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " .$_FILES["file"]["name"]. "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]."<br />"; } if(is_uploaded_file($_FILES["file"]["tmp_name"])){ echo "legal uploaded file<br>"; }else echo "illegai uploaded file<br>"; $src_path= $_FILES["file"]["tmp_name"]; $des_path= '/home/tony/www/upload/'."a.jpg"; //$des_path= '/home/tony/www/upload/'.$_FILES["file"]["name"]; echo $src_path . "<br />"; echo $des_path . "<br />"; if(file_exists($src_path)){ echo "file exists.<br />"; } if(move_uploaded_file($src_path,$des_path)){ echo "Stored in: "."<br />"; }else echo"<br>move failed."; printf("<img src=%s />","upload/a.jpg"); ?>
这段出来代码冗杂,不美观。但是说明了一些问题。
1/还是要指定字符集,不然在不同的浏览器或者系统上会有问题,apache2的配置文件不要AddDefaultCharset功能,如果改动过请改为AddDefaultCharset Off;重启apache2
2/临时文件在php执行之后就会消失,肉眼难见,可以在最后来个while(1);
3/有人问为什么不可以用其他函数来转移上传的文件呢?既然我都有路径了。http这套上传机制可以保证一定安全性,如果你能验证上传的安全性,其他函数也可以胜任
4/我老是move不成功,后来几经调查,是新的路径没有权限,都是linux的安全性惹的祸。试过用chmod -R 777 www,发现其下upload没有获得777的权限。。。这是bug?重新对upload改权限即可
最后插入图片用绝对路径不行,要用相对路径,到现在我都不明白为什么
应该在上传处理php那里加入一些文件类型检测啊,文件头检测啊,禁止运行的限制,这些安全性或者功能限制等到有空我再补上来吧。
边栏推荐
- 当我们在看待产业互联网的时候,总是会站在消费互联网的对立面来看待它
- [iccv 2019] characteristics precise supervision of feature super resolution for small object detection
- VR全景拍摄为什么要加盟?巧借资源实现共赢
- Graduates
- exness:美GDP终值意外加速萎缩1.6%
- matlab 将三角剖分结果保存为STL文件
- 消灭Bug,开发者不可不知的几款Bug探索测试神器。
- 台湾SSS鑫创SSS1700替代Cmedia CM6533 24bit 96KHZ USB音频编解码芯片
- C语言:hashTable
- 操作系统面试题汇总(不定期更新)
猜你喜欢
Inventory the six second level capabilities of Huawei cloud gaussdb (for redis)
Detailed steps for Django to upload excel tables and write data to the database
【450. 删除二叉搜索树中的节点】
正则系列之字符类
Application of VoIP push in overseas audio and video services
Wechat applets - basics takes you to understand the life cycle of applets (2)
条件编译
如何快速通过PMP考试?
派尔特医疗在港交所招股书二次“失效”,上市计划实质性延迟
How unity pulls one of multiple components
随机推荐
Taiwan SSS Xinchuang sss1700 replaces cmedia cm6533 24bit 96KHz USB audio codec chip
Detailed steps for Django to upload excel tables and write data to the database
PS2手柄-1「建议收藏」
Graduates
The prospectus of pelt medical was "invalid" for the second time in the Hong Kong stock exchange, and the listing plan was substantially delayed
Basic syntax of VB
《微信小程序-基础篇》带你了解小程序中的生命周期(二)
matlab Delaunay 三角剖分内的查询点
4.3寸触控屏12路控制端口可编程网络中控支持5台中控主机相互备份
QT :QAxObject操作Excel
Django上传excel表格并将数据写入数据库的详细步骤
6-1漏洞利用-FTP漏洞利用
更智能!AIRIOT加速煤炭行业节能减排升级
“更福特、更中国”拨云见日,长安福特王牌产品订单过万
Conditional compilation
What is the difference between tolocal8bit and toutf8() in QT
pycharm从安装到全副武装,学起来才嗖嗖的快,图片超多,因为过度详细!
昨晚 Spark Summit 重要功能发布全在这里(附超清视频)
Wechat applets - basics takes you to understand the life cycle of applets (2)
C language: hashtable