96)PHP,文件上传(2)
(1)那么既然看到文件即使上传成功,但是只是在脚本周期内有效,脚本只要结束(脚本结束其实很快的),文件就会自动消失,那么怎么才能永久存储文件呢:
函数:
Move_uploaded_file(上传临时地址,目标地址);
完成:
需要使用$_FILES数组,存储了上传的临时文件的信息,包括临时地址!
为啥说$_FILE中存有文件的路径呢,可以看一下,我们$_FILE输出的信息
每个上传的临时文件,
有5个信息,
name:原始文件名,
type:类型,
tmp_name,临时地址,
error:是否有错误及错误类型,
size:大小。
(2)那么怎么判断文件类型:(为啥判断文件类型,因为,假如你要用户传图片,人家偏偏不传图片,传的是音频文件,那么这样不符合要求的,我们就直接给他扼杀在摇篮)
1 通常判断类型有两种方式: 2 (1)就是通过文件的后缀名,比如:~~~.mp3 ~~.png等等 3 (2)通过MIME方式,(我也不是很懂)(多用途internet邮件扩展):网络上传输资源时,使用的资源类型表示方法。 4 Text/html; image/png
那么截取后缀名方式(必须学会)
1 (1)strrchr(文件名变量,‘.’) 截取文件名中最后出现 . 的后面的字符串 2 (2)strchr(文件名变量,‘.’)截取文件中名中第一次出现 . 的后面的字符串
获得文件路径的函数(详情看手册):
1 (1)pathinfo() 2 <?php 3 $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); 4 5 echo $path_parts['dirname'], "\n"; 6 echo $path_parts['basename'], "\n"; 7 echo $path_parts['extension'], "\n"; 8 echo $path_parts['filename'], "\n"; // since PHP 5.2.0 9 ?> 10 11 结果显示: 12 以上例程会输出: 13 14 /www/htdocs/inc 15 lib.inc.php 16 php 17 lib.inc 18 19 (2)$_FILE的五个参数同样能得到文件的类型($_FILE['type'])和名字($_FILE['name'])。
一段代码:
1 $a='x.y.z.png'; 2 echo strrchr($a,'.'); 3 echo "<pre>"; 4 echo "<pre>"; 5 echo "<pre>"; 6 echo strchr($a,'.');
结果展示:
(3)怎么在脚本周期内,将那个临时文件保留下来,用 move_uploaded_file(源文件名,新文件地址+名字)
1 index.php 2 <?php 3 4 var_dump($_POST); 5 echo '<pre>'; 6 echo "<pre>"; 7 8 9 echo '<pre>'; 10 echo "<pre>"; 11 echo '<pre>'; 12 echo "<pre>"; 13 14 var_dump($_FILES); 15 move_uploaded_file($_FILES['picture']['tmp_name'],'./new_name.png');
这个是将那个临时文件存在我的当前文件夹下,以new_name.png命名
开始我的当前文件夹目录情况:
然后我执行后
说明这个函数执行成功了
数据库中存的是图片的地址,所以我们可以直接将图片的地址读出来,然后直接赋给img的src就可以了。