php文件上传原理是通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php程序将文件保存在体统中。
html代码:
1
2
3
4
|
<form action= "shangchuan.php" method= "post" enctype= "multipart/form-data" > <input type= "file" name= "file" /> <input type= "submit" value= "上传" /> </form> |
后台处理界面(shangchuan.php):
有以下几点需要注意:
1.控制上传文件的类型
2.控制上传文件的大小
3.防止文件名重复
修改保存的文件名
用户名+时间戳+随机数+文件名
流水号
使用文件夹要提前建好路径。
4.保存文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//判断文件上传是否出错 if ( $_files [ "file" ][ "error" ]) { echo $_files [ "file" ][ "error" ]; } else { //控制上传文件的类型,大小 if (( $_files [ "file" ][ "type" ]== "image/jpeg" || $_files [ "file" ][ "type" ]== "image/png" ) && $_files [ "file" ][ "size" ]<1024000) { //找到文件存放的位置 $filename = "./file/" . date ( "ymdhis" ). $_files [ "file" ][ "name" ]; //转换编码格式 $filename = iconv( "utf-8" , "gb2312" , $filename ); //判断文件是否存在 if ( file_exists ( $filename )) { echo "该文件已存在!" ; } else { //保存文件 move_uploaded_file( $_files [ "file" ][ "tmp_name" ], $filename ); } } else { echo "文件类型不正确!" ; } } |
点击上传后文件就保存在系统的指定路径下。
保存后按照指定方法重命名文件名:
头像上传预览
原理:在html界面做一个头像大小的div,设置上传头像的背景,在div里面做一个上传文件的input,透明度设置为0.
这样,点击这个div就可以跟上传的效果相同。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<title>无标题文档</title> <style type= "text/css" > #yl{ width:200px; height:300px; background-image:url(img/11.png); background-size:200px 300px;} #file{ width:200px; height:300px; float:left; opacity:0;} </style> </head> <body> <form id= "sc" action= "chuli.php" method= "post" enctype= "multipart/form-data" target= "shangchuan" > <input type= "hidden" name= "tp" value= "" id= "tp" /> <div id= "yl" > <input type= "file" name= "file" id= "file" onchange= "document.getelementbyid('sc').submit()" /> </div> </form> <iframe style= "display:none" name= "shangchuan" id= "shangchuan" > </iframe> </body> <script type= "text/javascript" > //回调函数,调用该方法传一个文件路径,该变背景图 function showimg(url) { var div = document.getelementbyid( "yl" ); div.style.backgroundimage = "url(" +url+ ")" ; document.getelementbyid( "tp" ).value = url; } </script> </html> |
php处理界面(chuli.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?php if ( $_files [ "file" ][ "error" ]) { echo $_files [ "file" ][ "error" ]; } else { if (( $_files [ "file" ][ "type" ]== "image/jpeg" || $_files [ "file" ][ "type" ]== "image/png" )&& $_files [ "file" ][ "size" ]<1024000) { $fname = "./img/" . date ( "ymdhis" ). $_files [ "file" ][ "name" ]; $filename = iconv( "utf-8" , "gb2312" , $fname ); if ( file_exists ( $filename )) { echo "<script>alert('该文件已存在!');</script>" ; } else { move_uploaded_file( $_files [ "file" ][ "tmp_name" ], $filename ); unlink( $_post [ "tp" ]); echo "<script>parent.showimg('{$fname}');</script>" ; } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。