文件管理 · 2022年8月7日

phppost上传文件方法|如何在php上实现文件上传功能

A. 如何用POST方法上传文件

POST方法上传文件 随着PHP不断的完善,PHP对文件上传的支持也越来越完美,在PHP 4.0.3以前我们只能用() 和 is_uploaded_file()方法结合来上传文件,呵呵,其实就是这样我们也会感觉到PHP相对于ASP来说上传文件要方便很多,这也就是本人选择PHP的一点小小的引以为豪的地方。PHP 4.0.3之后PHP又出了一个新函数move_uploaded_file()。上传文件相对来说又简便了不少,只要这一个函数就行(我可不是说上传文件系统只要就一个函数就足够了,大家可不要误解我的意思,我的意思是move_uploaded_file是上传文件的一个核心函数)。 好了,我们看一个三个函数的讲解(资料来自:PHP手册)。 (string source,string desk); 将文件从 source 拷贝到 dest。如果成功则返回 TRUE,失败则返回 FALSE。 例: if (!($file, $file.'.bak')) { print ("failed to $file…<br>\n"); } is_uploaded_file(string filename) 如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。 move_uploaded_file(string filename, string destination) 本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。 由三个函数的解释就可以得到一个结论,move_uploaded_file()是()和is_uploaded_file()函数的结合 讲了这么半天大家用起这三个函数可能还会有些生疏,下面给大家两个例子: 首先,建立一个前台页面,命名为index.html Code代码如下: <form enctype="multipart/form-data" action="_URL_" method="post"> Send this file: <input name="filename" type="file"> <input type="submit" value="Send File"> </form> 1,下面是关于()和is_uploaded_file()方法上传文件的方法(保存为:.php,上传文件需要将index.html中的_URL_改为.php) Code代码如下: <?php $path="./uploadfiles/"; if(is_uploaded_file($filename)) //特别注意这里,传递给is_uploaded_file的为$filename,可不要传递$_FILES["filename"]["name"] { $file1=$_FILES["filename"]["name"]; //注意这里$_FILES[]方法为PHP4.1.0及以上版本支持,PHP以下的版本要用$HTTP_POST_FILES[]方法 $file2=$path.time().$file1; $flag=1; } if($flag) $result=($_FILES['filename']['tmp_name'],$file2); if($result) echo "上传成功!"; ?> 2,下面是关于move_uploaded_file()方法上传文件的方法(保存为:move.php,上传文件需要将index.html中的_URL_改为move.php) Code代码如下: <?php $path="./uploadfiles/"; if($_FILES["filename"]["name"]){ $file1=$_FILES["filename"]["name"]; $file2 = $path.time().$file1; $flag=1; } if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2); //特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件 if($result) echo "上传成功!"; ?> 文件上传就讲到这里了,这只是两个小程序,其实要完成文件上传所要的代码可不是这些就能了事的。一般还要有文件大小限制,文件扩展名选取,还有一些其它的安全方案。

B. 如何利用PHP代码上传文件

上传代码看这里(带重命名的):<form action="" method="post" enctype="multipart/form-data">上传文件:<input type="file" name="upLoad"><br>重命名为:<input type="text" name="newName"><br><input type="submit" name="submit"><input type="reset" name="reset"></form><br><i><small>文件上传到服务器需要一些时间</small></i><br><?php$upLoadDir="/"; //为目录变量指定目录位置$upLoadError=$_FILES['upLoad']['error'];$fileName=$_FILES['upLoad']['name'];$fileTemName=$_FILES['upLoad']['tmp_name'];$fileSize=$_FILES['upLoad']['size'];$newName=$_POST['newName'];function upLoad(){ global $upLoadDir,$upLoadError,$fileName,$fileTemName,$fileSize,$fileSuffix,$newName; if($newName){ //如果需要被更新文件名 $fileReName=$newName.".".pathinfo($fileName,PATHINFO_EXTENSION); //采用新文件名+获取文件名后缀 }else{ //如果不需要更新文件名 $fileReName=$fileName; //定义文件存储位置,并在文件名前加一组随机数字 } if($upLoadError>0){ //0表示没有错误发生,文件上传成功 echo"错误:"; switch($upLoadError){ case 1:echo"上传文件超过配置文件规定值。";break; //1表示上传的文件超过了php.ini中upload_max_filesize选项限制的值 case 2:echo"上传文件超过表单约定值。";break; //2表示上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 case 3:echo"上传文件不完全。";break; //3表示文件只有部分被上传。 case 4:echo"没有上传文件。";break; //4表示没有文件被上传。 } }else{ if(is_uploaded_file($fileTemName)){ //确认文件通过HTTP POST上传 if(!move_uploaded_file($fileTemName,($upLoadDir.$fileReName))){ //如果无法将上传的文件移动到新位置 echo"文件上传失败,请重新上传。"; }else{ //否则返回成功信息 echo"文件上传成功!<br>".date("Y-m-d H:i:s")."<br>上传文件:".$fileName."<br>文件大小:".number_format(($fileSize/1024/1024),2)."Mb"."<br>重命名为:".$fileReName; } }else{ //如果不是通过HTTP POST方式上传,则提示非法信息 echo"文件".$fileName."不合法!"; } }}if(!empty($fileName)){ if(is_dir($upLoadDir)){ //如果目录存在 upLoad(); //则执行上传流程 }else{ //如果目录不存在 mkdir($upLoadDir); //则创建目录 upLoad(); //再执行上传流程 }}else{ echo"请选择需要上传的文件。";}?>

C. 如何在php上实现文件上传功能

PHP 一般使用 POST 方法上传文件,下面是一个简单的文件上传示例,里面有相关的注释:up.htm 文件:———-<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Up Sample</title> </head> <body> <form action="up.php" method="post" enctype="multipart/form-data"> <!–备注:表单中 enctype="multipart/form-data " 的意思,是设置表单的 MIME 编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了 multipart/form-data ,才能完整的传递文件数据,进行下面的操作,并且 method 要设置为 "post"–> File:<br /> <input type="file" name="upfile" size="30"><br /> <!–上传框要设置 type="file"–> <br /> <input type="submit" value="Upload"> </form> </body></html>———-up.php 文件———-<?phpif (is_uploaded_file($_FILES["upfile"]["tmp_name"])){ //如果有文件上传 //is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的,返回布尔值 //$_FILES['upfilename']['…'],其中的 'upfilename' 即为上传框的 name 属性 //$_FILES['upfile']['tmp_name'] — 文件被上传后在服务端储存的临时文件名,一般是系统默认 if(!eregi('pdf', $_FILES['upfile']['type'])){ //我们这里假设你要上传一个 pdf 文件 //if(!eregi('pdf', $_FILES['upfile']['type'])) 这个是判断上传文件类型的,是不是 pdf 文件,当然,若是想判断是否是 jpg 文件的话,将 pdf 改成 jpg 就可以了,即 if(!eregi('jpg', $_FILES['upfile']['type'])) //$_FILES['upfile']['type'] 是文件的 MIME 类型,如果浏览器提供此信息的话。例如“image/gif” echo 'The uploaded file is not an pdf File! Please upload a right file!'; }else{ $filename = $_FILES['upfile']['name']; //$filename = $_FILES['upfile']['name'],这里是指定上传后的文件名,这里使用的仍是原来的文件名字,($_FILES['upfile']['name'] 是原始文件的名字) if(move_uploaded_file($_FILES["upfile"]["tmp_name"], dirname(__FILE__)."/upload_file/".$filename)){ //这里就是上传文件 //dirname(__FILE__)."/upload_file/".$file_name — 指定上传的目标文件,假设你要上传的目标文件夹upload_file 是和当前文件(upload.php)在同一文件夹下 //chmod(dirname(__FILE__)."/upload_file/". $file_name, 0444); //上面注释掉的是用来改变上传后文件的属性,444 即只有执行和读的权限(看情况加上) echo $_FILES["upfile"]["name"] . " uploaded succeed!!!"; }else{ echo "Can't upload!!!"; } }}else{ echo "File is not selected";}//需要注意的:/*在你的 up.php 同级目录下建立 upload_file 文件夹,来存放上传的文件在上传之前要看一下 php 的配置文件:php.ini 中的三处设置1.是否允许文件上传:( file_uploads = On )2.文件上传的最大 size:( upload_max_filesize )3.post 的最大 size ( post_max_size ) 这个大小设置成和 uplod_max_filesize 一样大或比 uplod_max_filesize 大*//*这只是很简单的一个文件上传的例子,为了帮助理解,只是判断了一下上传文件的类型,还可以使用 if 语句来判断上传文件的大小($_FILES['upfile']['type'])),并进行提示控制等,相关可以查阅 $_FILE['upfile'] 数组的各个值分别代表什么*/?>

D. 关于php实现文件上传

php的文件上传机制是把用户上传的文件保存在php.ini的upload_tmp_dir定义的临时目录(默认是系统的临时目录,如:/tmp)里的一个类似phpxXuoXG的随机临时文件,程序执行结束,该临时文件也被删除。PHP给上传的文件定义了四个变量:(如form变量名是file,而且register_globals打开) $file #就是保存到服务器端的临时文件(如/tmp/phpxXuoXG ) $file_size #上传文件的大小 $file_name #上传文件的原始名称 $file_type #上传文件的类型 推荐使用: $_FILES['file']['tmp_name'] $_FILES['file']['size'] $_FILES['file']['name'] $_FILES['file']['type']

E. 用php做这种上传文件页面并且在页面中能显示已经上传的文件该怎么做

1 上传文件的前端页面

<form enctype="multipart/form-data" action="服务器地址" method="post">

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

</form>

2 PHP端用$_FILES取出前端上次的文件,用move_uploaded_file把上传的文件从临时目录移动到你服务器的文件目录下

3 用scandir扫描你的文件目录,用is_file过滤文件,你页面上的文件大小,可以通过filesize获取,上传时间就是创建时间用filemtime

4 发起删除用unlink删除 发起下载就读取文件然后修改header返回即可

F. php怎么将接收到的post数据发送到另一个php文件中

可以用 Curl、socket、file_get_contents 等方式来发送POST数据

G. 怎样用PHP实现文件上传

创建一个文件上传表单允许用户从表单上传文件是非常有用的。请看下面这个供上传文件的 HTML 表单:<html><body><form action="upload_file.php" method="post"enctype="multipart/form-data"><label for="file">Filename:</label><input type="file" name="file" id="file" /> <br /><input type="submit" name="submit" value="Submit" /></form></body></html>请留意如下有关此表单的信息:<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。创建上传脚本"upload_file.php" 文件含有供上传文件的代码:<?phpif ($_FILES["file"]["error"] > 0){echo "Error: " . $_FILES["file"]["error"] . "<br />";}else{echo "Upload: " . $_FILES["file"]["name"] . "<br />";echo "Type: " . $_FILES["file"]["type"] . "<br />";echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";echo "Stored in: " . $_FILES["file"]["tmp_name"];}?>通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:$_FILES["file"]["name"] – 被上传文件的名称$_FILES["file"]["type"] – 被上传文件的类型$_FILES["file"]["size"] – 被上传文件的大小,以字节计$_FILES["file"]["tmp_name"] – 存储在服务器的文件的临时副本的名称$_FILES["file"]["error"] – 由文件上传导致的错误代码这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。上传限制在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:<?phpif ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000)){if ($_FILES["file"]["error"] > 0){echo "Error: " . $_FILES["file"]["error"] . "<br />";}else{echo "Upload: " . $_FILES["file"]["name"] . "<br />";echo "Type: " . $_FILES["file"]["type"] . "<br />";echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";echo "Stored in: " . $_FILES["file"]["tmp_name"];}}else{echo "Invalid file";}?>注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。保存被上传的文件上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:<?phpif ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000)){if ($_FILES["file"]["error"] > 0){echo "Return Code: " . $_FILES["file"]["error"] . "<br />";}else{echo "Upload: " . $_FILES["file"]["name"] . "<br />";echo "Type: " . $_FILES["file"]["type"] . "<br />";echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";if (file_exists("upload/" . $_FILES["file"]["name"])){echo $_FILES["file"]["name"] . " already exists. ";}else{move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);echo "Stored in: " . "upload/" . $_FILES["file"]["name"];}}}else{echo "Invalid file";}?>上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。注释:这个例子把文件保存到了名为 "upload" 的新文件夹。