A. php文件上传,一般是保存在绝对路径还是相对路径
一般是保存web访问的绝对路径,如这个文件以后可以通过http://example.com/uploads/file/filename访问,那么就保存为/uploads/file/filename。当然最好是把路径和文件名分开保存。这样输出的时候就可以直接echo$row['path'].$row['filename']了
B. php 文件上传
<?php //$uploaddir = "D:My Documents/phpnow/htdocs/mysite/_notes/upload/";原代码,路径少了个斜杠,按道理是错误的.$uploaddir = "D:/My Documents/phpnow/htdocs/mysite/_notes/upload/";//设置文件保存目录 注意包含/$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型// 下面这句,程序中都没有用到,估计是用来做预览图片的浏览路径的.//因为,如果是在服务器上面,使用$uploaddir这种本地路径(相对于http://这种网络路径)的地址来//访问是访问不到的,所以应该改成这样如下,相应的图片的预览路径也有一点改动$patch="http://127.0.0.1/mysite/_notes/upload/";//程序所在路径function fileext($filename){ return substr(strrchr($filename, '.'), 1);}//获取文件后缀名函数function random($length){ $hash = 'CR-'; $chars = ''; $max = strlen($chars) – 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash;}$a=strtolower(fileext(@$_FILES['file']['name']));//生成随机文件名函数if(!in_array(strtolower(fileext(@$_FILES['file']['name'])),$type)){ $text=implode(",",$type); echo "您只能上传以下类型文件: ",$text,"<br>";}//判断文件类型else{ $filename=explode(".",$_FILES['file']['name']); do { $filename[0]=random(6); //设置随机数长度 $name=implode(".",$filename); //$name1=$name.".Mcncc"; $uploadfile=$uploaddir.$name; } while(file_exists($uploadfile)); //原代码是先移动文件(已经移动,原文件不存在了),后判断是否是通过上传的文件(当然了,文件都没了,怎么还会是true呢.), if(is_uploaded_file(@$_FILES['file']['tmp_name'])&&move_uploaded_file(@$_FILES['file']['tmp_name'],$uploadfile)){ //输出图片预览,注意img标签的src,有改动 echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='{$patch}{$name}'></center>"; echo"<br><center><a href='javascript:history.go(-1)'>继续上传</a></center>"; }else{ echo "上传失败!"; }}?>
C. 怎么将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";}?>上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。
D. 怎么用php实现文件的上传,要求文件类型为jpg,大小不超过2m,上传的文件存放在u
$_FILES官方文档
你可以看看官方的$_FILES文档,里面有对$_FILES的内容的解释。
想通过PHP来处理文件信息就得通过$_FILES的内容来处理,比如文件类型可以用type来判断,要求文件类型为jpg,那就判断if ($_FILES['file1']['type'] === 'image/jpeg'),这里的file1并不是绝对的,视情况而定。
当然如果你觉得判断类型太麻烦,你也可以直接从name中判断后缀名,自己将文件名分割一下就好了。大小可以用size,默认单位是字节,不超过2M就要除以1024*1024了,可以将字节转换到兆字节。
要将上传的文件放在U目录下,就用move_uploaded_file函数来解决,move_uploaded_file官方文档
E. 如何在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'] 数组的各个值分别代表什么*/?>
F. php中上传文件的方法有多少种
一、传统的php写的上传类。写一个php的上传类,这个方法用到的知识全部是php的,而且技术的难点也不多。<form method="post" action="upload.php" enctype="multipart/form-data"><table border=0 cellspacing=0 cellpadding=0 align=center width="100%"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000">//隐藏域。这里name必须设置成MAX_FILE_SIZE,其值就是上传文件的最大长度,单位是B,这里我限制成2M<input name="file" type="file" value="浏览" >< input type="submit" value="上传" name="B1"></table></form> 服务端利用php的$_FILES['file']['name']来获取文件后缀名,具体的代码自己查找资料看看,这里就不多说了。总结;这个方法可以用来上传小于2M的文件或者是图片,基本的功能可以实现。二、利用uploadify插件这个是利用jQuery的上传插件,上传可以带进度条,容易配置。总结:可以上传一些大文件,和图片,而且带进度条,可以多文件上传,在WEB中会经常用。三、利用网络的webuploadWebUploader 是由 Bai FEX 团队开发的一款以 HTML5 为主,FLASH 为辅的现代文件上传组件。在现代的浏览器里面能充分发挥 HTML5 的优势,同时又不摒弃主流IE浏览器,沿用原来的 FLASH 运行时,兼容 IE6+,iOS 6+, Android 4+。采用大文件分片并发上传,极大的提高了文件上传效率。四、swfupload的插件这是一个jquery的上传插件,功能也非常强大,开发也比较容易,网上有很多的资料,可以自行查找。
G. 求php怎么实现web端上传超大文件
加大PHP上传文件大小的限制,是通过修改PHP.INI文件来实现,但是这个支持是有限度的,因为WEB协议本为下载而生,超大文件的上传是FTP的专利。PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间,超过这个时间就会报错3.memory_limit=50M 设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此指令只有在编译时设置了–enable-memory-limit标志的情况下才生效4.upload_max_filesize=20M 允许上传文件的最大大小,此指令必须小于post_max_size5.upload_tmp_dir 上传文件临时存放目录6.post_max_size=30M 允许post方式可以接受最大大小$_FILES['myFile']['name'] 客户端上次文件的原始名称。 $_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。 $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 $_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。 $_FILES['myFile']['error'] 和该文件上传相关的状态码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量) UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功。UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 UPLOAD_ERR_FORM_SIZE 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传。 UPLOAD_ERR_NO_FILE 值:4; 没有文件被上传。 值:5; 上传文件大小为0. 文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。附:修改PHP上传文件大小限制的方法1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time在php.ini里查找max_execution_time默认是30秒.改为max_execution_time = 00表示没有限制2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.查找 post_max_size .改为post_max_size = 150M3. 很多人都会改了第二步.但上传文件时最大仍然为 8M.为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。查找upload_max_filesize,默认为8M改为upload_max_filesize = 100M另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
H. PHP如何上传文件
$f_type=strtolower("swf,rar,jpg,zip,7z,iso,gif,exe,rmvb");//设置可上传的文件类型 if (!is_uploaded_file($file) || ($_FILES['photoupload']['size'] > 20000 * 1024 * 1024) ) { $error = 'Please upload only files smaller than 2Mb!'; } $f_name=$_FILES['photoupload']['name']; $tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名 $tmp_type=strtolower($tmp_type); if(!stristr($f_type,$tmp_type)){ $error="对不起,不能上传格式为:".$tmp_type."的文件:".$f_name; } if(move_uploaded_file($_FILES['photoupload']['tmp_name'], $uploadfile)){ $result['result'] = 'success'; $result['size'] =$f_name."文件上传成功";}else{$result['result'] = 'failed'; $result['error'] =$f_name."上传失败";}
I. php文件上传使用了哪些函数
//定义上传目录变量$upath="./upload/";//获取上传文件信息$fupload=$_FILES['image'];//定义上传的文件类型$imgtype=array("image/jpeg","image/jpg","image/png","image/gif","image/bmp");//获取php.ini文件upload_max_filesize的大小$umfs=ini_get("upload_max_filesize");//获取html表单post文件大小$pms=ini_get("post_max_size");//获取上传文件错误信息if($fupload["error"]>0){switch($fupload["error"]){case 1:$errmsg="上传的文件的大小超过了".$umfs;break;case 2:$errmsg="上传的文件的大小超过了HTML表单中".$pms."的限制";break;case 3:$errmsg="文件只有部分被上传";break;case 4:$errmsg="没有选择上传文件";break;case 6:$errmsg="找不到临时文件夹";break;case 7:$errmsg="文件写入失败";break;}die("上传错误:".$errmsg);}//过滤上传文件的大小if($fupload["size"]>100000000){die("上传文件的大小超出了限制");}//过滤上传的文件类型if(!in_array($fupload["type"],$imgtype)){die("不支持上传的文件类型:".$fupload["type"]);}//执行上传文件if(is_uploaded_file($fupload["tmp_name"])){if(move_uploaded_file($fupload["tmp_name"],$upath.$fupload["name"])){echo "文件上传成功!";}}else{die("不是一个上传文件!");}