php 入门级文件上传详解

上传文件我们少不了move_uploaded_file函数本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 php教程 的 http post 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。

如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。

先来看一个关于在上传关表单设置

<html>
<head>
<title>a simple file upload form</title>
</head>
<body>
<form enctype="multipart/form-data"
   action="<?print $_server['php_self']?>" method="post">
<p>
<input type="hidden" name="max_file_size" value="102400" />
<input type="file" name="fupload" /><br/>
<input type="submit" value="upload!" />
</p>
</form>
</body>
</html>

这样我们主设置的上传文件最大不能超过102400字节了

在php中要实现文件上传很简单如下代码

if ( $_files['fupload']['type'] == "image/gif" ) {

         $source = $_files['fupload']['tmp_name'];
         $target = "upload/".$_files['fupload']['name'];
         move_uploaded_file( $source, $target );// or die ("couldn't copy");
         $size = getimagesize( $target );

         $imgstr = "<p><img width="$size[0]" height="$size[1]" ";
         $imgstr .= "src="$target" alt="uploaded image" /></p>";

         print $imgstr;
     }

这样就ko了,下面我们总结实例

php
<html>
<form enctype="multipart/form-data" action="" method="post">
<input type="hidden" name="max_file_size" value="6000000" /> <!--设置允许提交表单的最大字节数-->
文件上传: <input name="file" type="file" />
<input type="submit" value="上传"/>
</form>
</html>

 

<?
//处理程序
function extend($file_name) //定义获取文件的扩展名函数
{$extend =explode("." , $file_name);
$va=count($extend)-1;
return strtolower($extend[$va]);}

$dirname="../";//是否启用上一层路径,格式为:$dirname="../";或$dirname="http://www.cnblogs.com/";等等与$dir组合使用,注意不要溢出根路径
$dir='upload/aa/bb';//设定上传目录,与上面的$dirname组合
$file=$_files['file'];//从文件域表单获取文件
$filename=$file['name'] ;//获取文件全名
$c_filesize=$file['size'] ;//获取本地的文件大小
$extendname=extend($filename);//获取文件扩展名
if($c_filesize>200000000000)die("文件太大");//限制上传文件大小, 单位字节

//if($extendname!="jpg")die("只允许上传jpg格式的图片");//限制上传文件格式,去掉语句开头的两斜杠生效

if(!file_exists($dir));//检查目录文件夹是否存在,不存在则建立新文件夹
{
$v=split ('[/.-]', $dir);
for ( $i=0 ; $i <count($v) ; $i++)
{$dirname=$dirname.$v[$i];
if(!file_exists($dirname))mkdir($dirname);
$dirname=$dirname."/";}
} //目录创建完毕
?>

<?
$dest=$dirname.date("ymdhis", time()).rand(100000,999999).".".$extendname; //设置文件名为日期加上从100000到999999的随机数和扩展名
if(file_exists($dest))die("该文件已经存在");
if(move_uploaded_file($file['tmp_name'],$dest)) //调用文件上传函数
{$s_filesize=filesize($dest);//获取服务器端的文件大小
echo "文件上传成功,<a href=".$dest.">查看文件地址</a>";
echo "<br>本地文件名:".$filename;
echo "<br>远端文件名:".$dest;
echo "<br>大 小:".ceil($s_filesize/1024)." kb";
echo "<br>扩展名:".$extendname;
echo "<br>大 小:".$c_filesize." byte";}
else
{echo "还未进行文件上传";}
?>

总结了文件上传的错误代码

  upload_err_ok没有错误。
  
  upload_err_ini_size的上传的文件超过最高价值存在中指定的文件。
  
  upload_err_form_size的上传的文件超过最高价值所指定的max_file_size隐藏的部件。
  
  upload_err_partial的文件上传被取消了,只有部分的文件被上传。
  
  upload_err_nofile没有文件被上传。

 

时间: 2024-09-20 09:45:04

php 入门级文件上传详解的相关文章

Swift HTTP网络操作库Alamofire实现文件上传详解

六,使用Alamofire进行文件上传 1,Alamofire支持如下上传类型: File Data Stream MultipartFormData 2,使用文件流的形式上传文件 let fileURL = NSBundle.mainBundle().URLForResource("hangge", withExtension: "zip")   Alamofire.upload(.POST, "http://www.hangge.com/upload.

java ftp文件上传详解

先我们来看两段简单的代码 将本地文件上传到ftp服务器上,代码如下:  @test  public void testuploadfromdisk(){   try {    fileinputstream in=new fileinputstream(new file("d:/test.txt"));    boolean flag = uploadfile("127.0.0.1", 21, "test", "test",

PHP文件上传详解

HTML部分:    代码如下 复制代码 <form action="upload.php" method="post" enctype="multipart/form-data"> 上传:<input type="file" name="myfile" /> <input type="submit" name="submit" valu

struts2中文件上传详解

struts2中文件上传的二个限制,一个是struts.multipart.maxSize,如果不设置,struts2 的核心包下的default.properties文件里有默认的大小设置struts.multipart.maxSize=2097152,即2M. 这是struts2文件上传的第一道关. 第二道关是inteceptor中的maximumSize. 当真实的文件大小能通过第一道关时.针对不同的action中配置的inteceptor,maximumSize才能发挥相应的拦截作用.

Multipart/form-data POST文件上传详解

理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下:      <form method="post"action="http://www.111cn.net" >          <inputtype="text" name="txt1">          <inputtype="text" name=&

php入门级文件上传代码

 代码如下 复制代码 header("content-type: text/html; charset=utf-8"); ?> <form method="post" action="./uploadaction.php" enctype="multipart/form-data" name="form">        <input type="file" na

怎么做一个多线程的文件上传与解压啦?

问题描述 在做一个项目时需要及时对上传的文件进行解压,将需要的数据导入数据库,怎么同时进行这两件事啦? 解决方案 解决方案二:你不是已经说出来了吗?直接做呗!对文件解压然后将解压的文件转换成二进制直接保存到数据库里面.

PHP文件上传实例详解!!!_php基础

首先来看下上传部分的表单代码:   复制代码 代码如下:      <form method="post" action="upload.php" enctype="multipart/form-data">        <table border=0 cellspacing=0 cellpadding=0 align=center width="100%">         <tr>  

php之文件上传简单介绍

要声明的form表单格式 <form action="act.php" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="username" /> <br/> 头像: <input type="file" name="pic" /