96)PHP,文件上传(2)
(1)那么既然看到文件即使上传成功,但是只是在脚本周期内有效,脚本只要结束(脚本结束其实很快的),文件就会自动消失,那么怎么才能永久存储文件呢:
函数:
Move_uploaded_file(上传临时地址,目标地址);
完成:
需要使用$_FILES数组,存储了上传的临时文件的信息,包括临时地址!
为啥说$_FILE中存有文件的路径呢,可以看一下,我们$_FILE输出的信息
每个上传的临时文件,
有5个信息,
name:原始文件名,
type:类型,
tmp_name,临时地址,
error:是否有错误及错误类型,
size:大小。
(2)那么怎么判断文件类型:(为啥判断文件类型,因为,假如你要用户传图片,人家偏偏不传图片,传的是音频文件,那么这样不符合要求的,我们就直接给他扼杀在摇篮)
通常判断类型有两种方式:
()就是通过文件的后缀名,比如:~~~.mp3 ~~.png等等
()通过MIME方式,(我也不是很懂)(多用途internet邮件扩展):网络上传输资源时,使用的资源类型表示方法。
Text/html; image/png
那么截取后缀名方式(必须学会)
()strrchr(文件名变量,‘.’) 截取文件名中最后出现 . 的后面的字符串
()strchr(文件名变量,‘.’)截取文件中名中第一次出现 . 的后面的字符串
获得文件路径的函数(详情看手册):
()pathinfo()
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?> 结果显示:
以上例程会输出: /www/htdocs/inc
lib.inc.php
php
lib.inc ()$_FILE的五个参数同样能得到文件的类型($_FILE['type'])和名字($_FILE['name'])。
一段代码:
$a='x.y.z.png';
echo strrchr($a,'.');
echo "<pre>";
echo "<pre>";
echo "<pre>";
echo strchr($a,'.');
结果展示:
(3)怎么在脚本周期内,将那个临时文件保留下来,用 move_uploaded_file(源文件名,新文件地址+名字)
index.php
<?php var_dump($_POST);
echo '<pre>';
echo "<pre>"; echo '<pre>';
echo "<pre>";
echo '<pre>';
echo "<pre>"; var_dump($_FILES);
move_uploaded_file($_FILES['picture']['tmp_name'],'./new_name.png');
这个是将那个临时文件存在我的当前文件夹下,以new_name.png命名
开始我的当前文件夹目录情况:
然后我执行后
说明这个函数执行成功了
数据库中存的是图片的地址,所以我们可以直接将图片的地址读出来,然后直接赋给img的src就可以了。
最新文章
- jQuery中取消后续执行内容
- cassandra-replication_factor 和 consistency level
- 12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(5)
- 对端口Com1的访问被拒绝
- 事务隔离级别与传播机制,spring+mybatis+atomikos实现分布式事务管理
- ORACLE数据库 DBA常用知识
- 进程间通信——IPC之共享内存
- python复习基本知识
- win10安装VMware v14.1.1.28517
- vue手把手教你实现走马灯商品左右轮播图
- Java高级教程02
- Dev-Tips
- MySQL--详细查询操作(单表记录查询、多表记录查询(连表查询)、子查询)
- 如何知道局域网内哪些ip被占用----工具法Free IP Scanner
- HDU 5521.Meeting 最短路模板题
- 基于spring-mybatis-data-common基架快速搭建web应用
- SQL Server 数值四舍五入,小数点后保留2位
- MySQL单行注释和多行释
- A1043 Is It a Binary Search Tree (25 分)
- IntelliJ IDEA问题总结