兄弟姐妹,谁能解释一下php上传文件的方式? 兄弟姐妹,谁能解释一下php上传文件的方式?用php实现文件的上传必须通过表单吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己看一下手册:PHP中文版开发手册[CHM] 好像不能说是php实现文件上传~上传文件就是把文件附到表单后面post给服务器的~ 贴个demo:~~~~~~~~~~~~~~~~~~~~~~-----------------------------------------------------------------------------<form action="test.php" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="提交" /></form><?php //print_r($_FILES);//test:Upload($_FILES); ?> /** * name:文件上传 * params:$file($_FILE超全局变量) * return:图片相对地址(用于插入数据库) **/ function Upload($files){ //允许:上传文件类型 $type = array("jpg","jpeg","gif","bmp","png",'mp3'); //上传路径 $path = "./path/"; //获取:上传文件后缀 $ftype = strtolower(substr(strrchr($files["file"]["name"], '.'), 1)); //检查:文件类型 if(!in_array($ftype,$type)){//不通过则执行 $types=implode(",",$type); echo "您只能上传以下类型文件: ",$types," <br>"; return false; }else{ //判断文件大小 if($files["file"]["size"] > 10000000){ echo "文件过大,已超过10MB"; return false; }else{ do{ //获取一个新文件名 $fname = time().'_'.$ftype; $upfile = $path.$fname; //判断此文件名是否被占用,若没有则跳出循环,重复则重新生成 }while(file_exists($upfile)); //上传文件 if(move_uploaded_file($files["file"]["tmp_name"],$upfile)){ //注意 var_dump($upfile); return $upfile; }else{ return false; } } } return false; } 想深入了解,请看HTTP相关的RFC文档个人认为,在正常情况下(因为有的人喜欢胡扯,他可以说可以用FTP传啊,安装控件啊),不用表单应该不行. 不是php上传文件,而是浏览器上传文件!当表单属性 method="post" 和 enctype="multipart/form-data"提交时浏览器就会将表单中 input type=file 对象所指定的文件上传至服务器。这是HTTP协议的一部分php只是简化了程序读取上传文件的过程而已通过HTML页面上传文件,只能用表单如果通过php程序上传文件,可以用curl函数以上都是指使用http协议,当然还可以用其他协议来完成文件上传 表单只是一种工具,用其它方法一样可以上传文件,只不过很少有人用,curl,socket,这些都能上传. 用表单的文件域.在处理页面中获取,并存入images文件夹中$fileArr=$_FILE['file'];if(is_uploaded_file($fileArr['tmp_name'])){ $fileName="images/".$fileArr['name']; move_uploaded_file($fileArr['tmp_name'],$fileName);} 最简单的文件上传代码<?php move_uploaded_file($_FILES['pic']['tmp_name'],$_FILES['pic']['name']);//move_uploaded_file()翻译成中文的意思就是:移动-已经上传的-文件?><form action="" method="post" enctype="multipart/form-data" name="form1"> <input name="pic" type="file" id="pic"> <input type="submit" name="Submit" value="提交"></form> 相关知识:$_FILES["表单上文件框的名称"]["相关内容"]为后台接收到的文件的相关信息,是内置的一个超全局变量,一共包括五种内容:原文件名name类型type大小size错误信息error(0为正常,1234分别代表四个不同的错误信息)上传到临时文件夹后的路径及名称tmp_name$_FILES["uppic"]["error"]==0 判断上传是否出错is_uploaded_file($_FILES["uppic"]["name"]) 判断是否上传move_uploaded_file(移动对象,目标目录及文件名)移动已上传的文件,返回true或false,表示移动是否成功 一个简单的php画图问题、、、 uchome管理员改密码 fsockopen属于哪一端 ? 是不是装了zend studio就不用装apache和php了? php中多维数组问题??? PHP写入数据库的问题 正则问题 while 嵌套if 无法执行 如何在类中定义一个数组? 请用php操作过flash的高手帮忙! 高手救命呀! PHP怎么调用 JavaScript函数?
PHP中文版开发手册[CHM]
~~~~~~~~~~~~~~~~~~~~~~
-----------------------------------------------------------------------------
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="提交" />
</form><?php
//print_r($_FILES);//test:
Upload($_FILES);
?>
/**
* name:文件上传
* params:$file($_FILE超全局变量)
* return:图片相对地址(用于插入数据库)
**/
function Upload($files){
//允许:上传文件类型
$type = array("jpg","jpeg","gif","bmp","png",'mp3');
//上传路径
$path = "./path/";
//获取:上传文件后缀
$ftype = strtolower(substr(strrchr($files["file"]["name"], '.'), 1));
//检查:文件类型
if(!in_array($ftype,$type)){//不通过则执行
$types=implode(",",$type);
echo "您只能上传以下类型文件: ",$types," <br>";
return false;
}else{
//判断文件大小
if($files["file"]["size"] > 10000000){
echo "文件过大,已超过10MB";
return false;
}else{
do{
//获取一个新文件名
$fname = time().'_'.$ftype;
$upfile = $path.$fname;
//判断此文件名是否被占用,若没有则跳出循环,重复则重新生成
}while(file_exists($upfile)); //上传文件
if(move_uploaded_file($files["file"]["tmp_name"],$upfile)){
//注意
var_dump($upfile);
return $upfile;
}else{
return false;
}
}
}
return false;
}
个人认为,在正常情况下(因为有的人喜欢胡扯,他可以说可以用FTP传啊,安装控件啊),不用表单应该不行.
当表单属性 method="post" 和 enctype="multipart/form-data"
提交时浏览器就会将表单中 input type=file 对象所指定的文件上传至服务器。这是HTTP协议的一部分
php只是简化了程序读取上传文件的过程而已通过HTML页面上传文件,只能用表单如果通过php程序上传文件,可以用curl函数以上都是指使用http协议,当然还可以用其他协议来完成文件上传
在处理页面中获取,并存入images文件夹中
$fileArr=$_FILE['file'];
if(is_uploaded_file($fileArr['tmp_name']))
{
$fileName="images/".$fileArr['name'];
move_uploaded_file($fileArr['tmp_name'],$fileName);
}
<?php
move_uploaded_file($_FILES['pic']['tmp_name'],$_FILES['pic']['name']);
//move_uploaded_file()翻译成中文的意思就是:移动-已经上传的-文件
?>
<form action="" method="post" enctype="multipart/form-data" name="form1">
<input name="pic" type="file" id="pic">
<input type="submit" name="Submit" value="提交">
</form> 相关知识:
$_FILES["表单上文件框的名称"]["相关内容"]为后台接收到的文件的相关信息,是内置的一个超全局变量,一共包括五种内容:
原文件名name
类型type
大小size
错误信息error(0为正常,1234分别代表四个不同的错误信息)
上传到临时文件夹后的路径及名称tmp_name$_FILES["uppic"]["error"]==0 判断上传是否出错is_uploaded_file($_FILES["uppic"]["name"]) 判断是否上传move_uploaded_file(移动对象,目标目录及文件名)移动已上传的文件,返回true或false,表示移动是否成功