当前位置:网站首页>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那里加入一些文件类型检测啊,文件头检测啊,禁止运行的限制,这些安全性或者功能限制等到有空我再补上来吧。
边栏推荐
- 腾讯会议应用市场正式上线,首批入驻超20款应用
- Perl转换文件的编码类型
- What is the difference between tolocal8bit and toutf8() in QT
- A necessary tool for testing -- postman practical tutorial
- Smarter! Airiot accelerates the upgrading of energy conservation and emission reduction in the coal industry
- Inventory the six second level capabilities of Huawei cloud gaussdb (for redis)
- CADD课程学习(2)-- 靶点晶体结构信息
- 线上线下双结合,VR全景是家具线上转型好方法!
- 派尔特医疗在港交所招股书二次“失效”,上市计划实质性延迟
- qt中toLocal8Bit和toUtf8()有什么区别
猜你喜欢

FH6908A负极关断同步整流模拟低压降二极管控制IC芯片TSOT23-6超低功耗整流器 1w功耗 <100uA静态 替代MP6908

CV+Deep Learning——网络架构Pytorch复现系列——basenets(BackBones)(一)

今早,投资人开始集体出差

条件编译

6-1漏洞利用-FTP漏洞利用
Solution to rollback of MySQL database by mistake deletion

数据智能——DTCC2022!中国数据库技术大会即将开幕

Application of VoIP push in overseas audio and video services

RP原型资源分享-购物类App

RP prototype resource sharing - shopping app
随机推荐
GeoServer安装
CV+Deep Learning——网络架构Pytorch复现系列——basenets(BackBones)(一)
A necessary tool for testing -- postman practical tutorial
条件编译
英语没学好到底能不能做coder,别再纠结了先学起来
CADD course learning (2) -- target crystal structure information
NLP技能树学习路线-(一)路线总览
线下门店为什么要做新零售?
Primary school, session 3 - afternoon: Web_ sessionlfi
C语言:hashTable
FH6908A负极关断同步整流模拟低压降二极管控制IC芯片TSOT23-6超低功耗整流器 1w功耗 <100uA静态 替代MP6908
MySQL数据库误删回滚的解决
Application of JDBC in performance test
QT :QAxObject操作Excel
漏洞扫描工具大全,妈妈再也不用担心我挖不到漏洞了
yolo 目标检测
基于slate构建文档编辑器
Why must we move from Devops to bizdevops?
广州炒股开户选择手机办理安全吗?
【论文阅读】Trajectory-guided Control Prediction for End-to-end Autonomous Driving: A Simple yet Strong Baseline