文件上传原理及应用

来源:互联网 发布:软件系统开发招标书 编辑:程序博客网 时间:2024/06/05 09:34

<!-- /* Font Definitions */ @font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-alt:SimSun;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:variable;mso-font-signature:3 135135232 16 0 262145 0;}@font-face{font-family:"/@宋体";panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:variable;mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal{mso-style-parent:"";margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;mso-pagination:none;font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:宋体;mso-font-kerning:1.0pt;} /* Page Definitions */ @page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section1{size:595.3pt 841.9pt;margin:72.0pt 90.0pt 72.0pt 90.0pt;mso-header-margin:42.55pt;mso-footer-margin:49.6pt;mso-paper-source:0;layout-grid:15.6pt;}div.Section1{page:Section1;}-->

本讲知识点

1FORM标签enctype属性

2$_FILES 系统函数

3move_uploaded_file函数

4is_uploaded_file 函数

 

1FORM标签enctype属性

      表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,

这个编码格式是application/x-www-form-urlencoded才能完整的传递文件数据

,不能用于文件上传;

只有使用了multipart/form-data,因为浏览器不能传递二进制代码

 

<formenctype="multipart/form-data" method="post"name="upform">

 

2$_FILES系统函数

      $_FILES['myFile']['name']   客户端文件的原名称。

$_FILES['myFile']['type']   文件的 MIME 类型,例如"image/gif"

                         image/jpg

image/jpeg

image/png

image/pjpeg

image/gif

image/bmp

image/x-png

application/x-zip-compressed

$_FILES['myFile']['size']   已上传文件的大小,单位为字节。

$_FILES['myFile']['tmp_name']  储存的临时文件名,一般是系统默认。

$_FILES['myFile']['error']   该文件上传相关的错误代码。

                         0;文件上传成功。

1;超过了文件大小php.ini

2;超过了文件大小

                           MAX_FILE_SIZE 选项指定的值。

3; 文件只有部分被上传。

4; 没有文件被上传。

5; 上传文件大小为0

3move_uploaded_file函数(上传后移动文件到目标位置的函数

     格式:move_uploaded_file(临时文件,目标位置和文件名);

 

4is_uploaded_file函数(判断上传MIME类型的文件函数)

      格式:move_uploaded_file(MIME);

判断是否为post传值

 

 

 

实例演示:

<?php

 

if(is_uploaded_file($_FILES['upfile']['tmp_name'])){//判断是否有文件上传

 

$upfile=$_FILES["upfile"];//将系统变量重新赋值,使用方便。注意upfile为控件的name

$name = $upfile["name"];

$type = $upfile["type"];

$size = $upfile["size"];

$tmp_name = $upfile["tmp_name"];

 

if (move_uploaded_file($tmp_name,'up/'.$name)) {//移动文件函数 $tmp_name为临时文件名称 'up/'.$name为目标位置 up文件夹为此php代码页统计目录

       echo"上传成功";

     }

}

?>

<form action="" enctype="multipart/form-data"method="post" name="up">

上传文件:

<input type="file"name="upfile" />

<input type="submit"  value="上传"/>

 

</form>

                                        代码详细位置:D:/website/training/shangchuan

老师的php代码解析:

 <?php

require('config.php');//连接数据库、打开数据库

if($_POST['submit']){//判断是否点击了submit按钮,若点击则执行括号内的代码

       $oldName = $_FILES['fileDoc']['name']; //获取上传文件的原始名字

       //echo $oldName;

       $tmp = explode('.',$oldName); //explode函数

       $docName = time().".".$tmp[1]; //设置新的文件名为当前时间与1970年的秒差.格式$tmp[1]在这里的作用是取得文件的格式

       $filepath = "upload/".$docName;//设置上传的路径(目的地)

       if(is_uploaded_file($_FILES['fileDoc']['tmp_name'])){//判断是否有文件上传

       if(move_uploaded_file($_FILES['fileDoc']['tmp_name'], $filepath)) //判断是文件是否移动成功

              echo"suc";

         else 

echo "failure";

       }

       $sql = "insert into `up`values('','".$oldName."','".$docName."')";//向数据库中插入文件的原始名及新名字

       $query = mysql_query($sql); //执行sql语句

       if($query>0) //判断是否执行成功

      echo "Suc";

    else

      echo "Failure";

       echo "<scriptlanguage='javascript'>setTimeout(/"window.location='dis.php'/",1000)</script>";//javascript跳转

}

?>

<formaction="<?echo $PHP_SELF?>" method="post"enctype="multipart/form-data">

<inputtype="file" name="fileDoc">

<br>

<inputtype="submit" name="submit" value="上传">

</form>

显示图片页面

<?php

require('config.php');

$sql = "select *from `up` order by `id` DESC";

$rs =mysql_fetch_array(mysql_query($sql));//查询最新插入的图片

 

?>

<imgsrc="upload/<?echo $rs['docName']?>" />

<?echo $rs['oldName']?>

 

括理解上传:fileform中,点击submit时将数据放进缓存中,然后判断是否post传值,将上传的文件移至定义的文件夹中,同时将文件新的名字和旧的名字插入数据库中

                                        

 

 

 

 

 

                            

原创粉丝点击