赞
踩
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>PHP图片上传</title> <style> .form-group { margin: 20px 0; } </style> </head> <body> <form method="post" enctype="multipart/form-data" action="upload.php"> <div class="form-group"> <label>文件上传</label> <input type="file" name="image"> </div> <div class="form-group"> <input type="submit" name="upload" value="上传"> </div> </form> </body> </html>
需要注意的是,form
表单在提交文件时不同于提交普通的文本,提交文件时需要指定传值方式为POST
,并且给form
增加一个enctype
属性,其值为multipart/form-data
,这样表单才会把文件的内容编码到HTML
请求中。
这里我们为action
属性指定值为upload.php
,即将文件提交到upload.php
中。
第一步,接收文件。
$file = $_FILES['image'];
不同于接收普通文本使用$_GET
或$_POST
,接收文件需要使用$_FILES
,其中image
对应 form
表单 input
组件中 name
属性的值。
打印接收到的文件,可以看到以下信息:
Array
(
[name] => 1.png // 原文件名
[type] => image/png // 文件类型
[tmp_name] => C:\Windows\php4DA9.tmp // 临时文件位置
[error] => 0 // 是否有错误,0为正常,具体错误取决于你的PHP配置文件是否限制了文件上传的信息
[size] => 60814 // 文件大小,单位 kb
)
第二步,取出文件的后缀名。
$ext = strrchr($file['name'], '.');
使用strrchr
函数检测.
在原文件名中最后一次出现的位置,并返回从该位置剩余的所有字符。
输出结果:
.png
第三步,为文件重新命名。
$newName = mt_rand(0000, 9999).time().$ext;
使用mt_rand
函数从0000-9999之间随机生成一个四位数,再连接上当前的时间戳作为新的文件名。
输出结果:
77231619271980.png
第四步,将新命名的文件移动到指定的文件夹进行保存。
假设将文件保存至 uploads/images 目录下,那么将保存路径与文件名拼接成一个完整的路径。
$path = 'uploads/images/'.$newName;
$info = move_uploaded_file($file['tmp_name'], $path);
使用PHP
的move_uploaded_file
函数将文件移动至指定的位置,该函数需要两个参数,第一个参数为原文件的临时位置,第二个参数为指定的保存位置。
原文件的临时位置在第一步中已经得到,需要保存的位置也已经有了,这时直接查看保存结果即可。
print_r($info);
返回 1 ,则为保存成功,其它值则为保存失败。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。