如何用PHP实现文件上传例子

上传

                如何用PHP实现文件上传(实例1)

上载文件表单网页:updatefile.htm
<html>
<head>
<title>上载文件表单</title>
</head>
<body>
<form ENCTYPE="multipart/form-data" ACTION="updatefile.php3" METHOD="POST">
<input type="hidden" name="MAX_FILE_SIZE"  value="1000">
<div align="center"><center> 请选取文件:  
<input NAME="userfile" TYPE="file">
<input TYPE="submit" VALUE="Send File">
</center></div>
</form>
</body>
</html>

----------------------------------------------------------------

处理上载文件网页:updatefile.php3

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title>处理上载文件</title>
</head>
<body>
<?
copy($userfile, "newfilename");
echo $userfile." -     用户上传到服务器上的文件临时存放的名称<br>";
echo $userfile_name." - 在用户机器上该文件的原始名称<br>";
echo $userfile_size." - 上传文件的实际字节数<br>";
echo $userfile_type." - 如果用户的浏览器提供了这个信息的话,
                        它表示mime的类型。例如
image/gif<br>";
?>
</body>
</html>

----------------------------------------------------------------

注意:文件上载后必须拷贝到新的地方或重新更名,
否则当进程执行完后,上载样本将被删除

                
                如何用PHP3实现文件上载(实例2)
                
     PHP3是一种非常强大的CGI脚本语言,就其语言特点基本上源于C,
就其实现方式而言更象PERL,而其对数据库的内在支持更使之成为ASP
的强大对手。

    首先在前台必须有一个界面

<HTML>
<HEAD>
<TITLE>文件上载界面</TITLE>
</HEAD>
<BODY><TABLE><CENTER>
<FORM ENCTYPE = "multipart/form-data" NAME = "SubmitForm"
ACTION = "upload.php3" METHOD = "POST">
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<TR>
<TD><INPUT NAME = "UploadFile" TYPE = "file" SIZE = "30"></TD>
</TR>
<TR>
<TD><INPUT NAME = "submit" VALUE = "提交" TYPE = "submit"></TD>
<TD><INPUT NAME = "reset" VALUE = "重置" TYPE = "reset"></TD>
</TR>
</FORM></CENTER></TABLE></BODY>
</HTML>
    值得注意的是一个 MAX_FILE_SIZE的隐藏值域,通过设置其VALUE可
以限制上载文件的大小。
    然后在后台实现文件上载操作。如果只是最基本的上载,寥寥几行
就可以搞定

<?
If($UploadFile != "none")
{
    copy($UploadFile,"$UploadFile_name");
    unlink($UploadFile);
}
else
{
    echo "你没有选择任何文件上载!";
}
?>
    因为form传递过来的值自动赋值给同名变量,所以直接通过
$UploadFile可以访问上载的文件,但由于这是一个保存文件的变量,因此
文件名字必须通过另外一个$UploadFile_
name变量取得。在拷贝文件后删去临时文件(unlink)。
    上面的代码完全可以工作,但实际应用中漏洞百出,让我们逐步来完善之

    首先,上载的文件必须有一个固定的目录保存,我们在这里用一个
$UploadPath变量保存之,如

$UploadPath = "/home/flier/upload/";
或复杂一点的自动定位,如
$UploadPath = AddSlashes(dirname
($PATH_TRANSLATED))."\\upload\\";
$PATH_TRANSLATED顾名思义是当前传送目录,
我们假定以其一个名为upload
的子目录来保存上载的文件。dirname函数返回其目录名,
然后加上子目录名
然后用一个变量$FileName保存完整的上载后文件名和路径
$FileName = $UploadPath.$UploadFile_name;
    其次,我们还想让用户得知上载文件的简要信息,如上载文件的大小
if($UploadFile_size <1024)
//上载文件大小
{
$FileSize = (string)$UploadFile_size . "字节";
}
elseif($UploadFile_size <(1024 * 1024))
{
$FileSize = number_format((double)
($UploadFile_size / 1024), 1) . " KB";
}
else
{
$FileSize = number_format((double)
($UploadFile_size / (1024 * 1024)), 1) . " MB";
}
     number_format函数起到格式化输出的作用,具体用法请参照手册
    下一步我们必须考虑到文件已经存在和拷贝操作失败的情况,并提
供相应的提示信息

if(!file_exists($FileName))
{
    if(copy($UploadFile,$FileName))    
    {
     echo "文件 $UploadFile_name
($FileSize)上载成功!";
    }
    else
    {
     echo "文件 $UploadFile_name上载失败!";
    }
    unlink($UploadFile);
}
else
{
echo "文件 $UploadFile_name已经存在!";
}
    然后我们应该考虑到大文件上载时容易出现超时的情况,可以用
set_time_limit($TimeLimit);加大超时限制时间。
    最后,把截面和实现代码综合到一个单独的文件中,为了实现这
个想法,我们通过在 form中添加一个隐含值
<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1">指出
当前的状态(界面或实现),以便区分对待完成代码如下
(文件名upload.php3)

<?
if(!$UploadAction):
?>
<HTML>
<HEAD>
<TITLE>文件上载界面</TITLE>
</HEAD>
<BODY><TABLE><CENTER>
<FORM ENCTYPE = "multipart/form-data" NAME = "SubmitForm"
ACTION = "upload.php3" METHOD = "POST">
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1">
<TR>
<TD><INPUT NAME = "UploadFile" TYPE = "file" SIZE = "30"></TD>
</TR>
<TR>
<TD><INPUT NAME = "submit" VALUE = "提交" TYPE = "submit"></TD>
<TD><INPUT NAME = "reset" VALUE = "重置" TYPE = "reset"></TD>
</TR>
</FORM></CENTER></TABLE></BODY>
</HTML>
<?
else:
?>
<HTML>
<HEAD>
<TITLE>文件上载代码</TITLE>
</HEAD>
<BODY>
<?
$UploadAction=0;

$TimeLimit=60; /*设置超时限制时间
缺省时间为 30秒
设置为0时为不限时 */
set_time_limit($TimeLimit);

If(($UploadFile != "none")&&
($UploadFile != ""))
{
$UploadPath = AddSlashes(dirname($PATH_TRANSLATED))."\\upload\\";
//上载文件存放路径
$FileName = $UploadPath.$UploadFile_name; //上载文件名
if($UploadFile_size <1024) //上载文件大小
{
$FileSize = (string)$UploadFile_size . "字节";
}
elseif($UploadFile_size <(1024 * 1024))
{
$FileSize = number_format((double)($UploadFile_size / 1024), 1) . " KB";
}
else
{
$FileSize = number_format((double)($UploadFile_size/(1024*1024)),1)."MB";
}

if(!file_exists($FileName))
{
    if(copy($UploadFile,$FileName))    
    {
     echo "文件 $UploadFile_name ($FileSize)上载成功!";
    }
    else
    {
     echo "文件 $UploadFile_name上载失败!";
    }
    unlink($UploadFile);
}
else
{
echo "文件 $UploadFile_name已经存在!";
}
}
else
{
echo "你没有选择任何文件上载!";
}

set_time_limit(30); //恢复缺省超时设置
?>
<BR><A HREF = "upload.php3">返回</A>
</BODY>
</HTML>
<?
endif;
?>

 

时间: 2024-08-01 23:01:31

如何用PHP实现文件上传例子的相关文章

请struts1 多文件上传例子?

问题描述 请struts1多文件上传例子? 解决方案 解决方案二:就没一个可以给一个例子

如何用JSP编写文件上传

  如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 package yuanyifileup; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.PageContext; public class yuanyifileup { private Se

Plupload上传组件 + java实现文件上传例子

为了兼容IE8浏览器,改用plupload:支持多文件上传和上传进度:之前程序的后台也不用修改.插件下载地址:http://www.plupload.com/download/ Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件. 由于可以实现把文件分块上传,所以可以满足在某些限制了上传大小的环境上传大文件的需求.  代码如下 复制代码 var uploader = new plupload.Uploader({ runti

java中基于表单的文件上传例子

如果在表单中使用表单元素 <input type="file" />,浏览器在解析表单时,会自动生成一个输入框和一个按钮,输入框可供用户填写本地文件的文件名和路径名,按钮可以让浏览器打开一个文件选择框供用户选择文件: 当表单需要上传文件时,需指定表单 enctype 的值为 multipart/form-data 在 form 元素的语法中,enctype 属性指定将数据发送到服务器时浏览器使用的编码类型. enctype 属性取值: application/x-www-f

HTML5 FormData 与无刷新文件上传例子

无刷新文件上传是一个常见而又有点复杂的问题,常见的解决方案是构造 iframe 方式实现. 在 HTML5 中提供了一个 FormData 对象 API,通过 FormData 可以方便地构造一个表单请求,并通过 XMLHttpRequest 来发送.通过 FormData 对象发送文件也是可以的,如此则无刷新上传就变的非常简单了. 那么 FormData 怎么使用呢?下面志文工作室对此进行简单的介绍. 1. 构造 FormData 对象 想得到一个FormData对象,很简单: var fd

js iframe实现ajax无刷新文件上传例子

js代码如下  代码如下 复制代码 <!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd"> <html xmlns="http://www.111cn.net /1999/xhtml"> <head> <meta http-equiv="Content-Type"

Doctrine文件上传处理例子

基本设置 创建一个简单的Doctrine实体类: // src/Acme/DemoBundle/Entity/Document.php namespace Acme\DemoBundle\Entity;   use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert;   /**  * @ORM\Entity  */ class Document {     /**      * @

用PHP实现文件上传

在WebDev站点上经常看到的一个问题是关于文件上传的.在这篇文章里我将解释如何用PHP实现文件上传. 设计上传表格 我们主要的目标是完成文件从本地计算机上传到服务器上去.为了做到这一点,我们需要做一个表格,允许用户选择一个文件并可以提交它.下面是一个例子: <HTML> <HEAD> <TITLE>文件上传表格</TITLE> </HEAD> <BODY> <TABLE> <FORM ENCTYPE="m

用PHP实现文件上传_php基础

在WebDev站点上经常看到的一个问题是关于文件上传的.在这篇文章里我将解释如何用PHP实现文件上传. 设计上传表格 我们主要的目标是完成文件从本地计算机上传到服务器上去.为了做到这一点,我们需要做一个表格,允许用户选择一个文件并可以提交它.下面是一个例子: <HTML> <HEAD> <TITLE>文件上传表格</TITLE> </HEAD> <BODY> <TABLE> <FORM ENCTYPE="m