php上传文件

来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:04:26

include "conn.php";
mysql_select_db("mydb");

if(is_uploaded_file|$_FILES['Filedata']['tmp_name']){  //这一句是用来判断是否有文件上传来的。如果有的放,才执行下面的内容;
    $Filedata = $_FILES["Filedata"];
$name = $Filedata['name'];    //真实的文件名字是这个,而不是tmp_name, 要知道,tmp_name是临时文件名,是php系统临时分配的文件名,只起到一个短时间中转的作用。而这个才是真正的文件名(确切地说,应该是上传时原文件名。上传后,这个文件名是可以随意更改的。)但是在我这套程序中,好像没用到它哦。
$type = $Filedata['type'];  //这些和上面下面都是一样,都是$_FILES[]这个系统变量自动生成的一系列参数。这个是文件类型;
$size = $Filedata['size'];  //这个是文件大小,以字节为单位;
$tmp_name = $Filedata['tmp_name'];  //这个是临时文件名,看到了吧,重点就在这里,进行移动的时候这个会用到哦。
$error = $Filedata['error']; //这个是上传中是否有什么错误,如果有错误的话,会返回错误,没有是false;


////////////////////////////////////////////
//
//===========以下是对文件进行服务器端验证,做好相关工作的话,可在一定程度上防止被传木马
//
/////////////////////////////////////////////
if($size>=30000){
  exit('您上传的文件大小超过限定');
}
switch($type){ //这里我用图片文件进行说明,如果你的是其它文件的话,也可以按这个方法进行处理。
  case 'image/pjpeg' : $nameback='.jpg';  //jpeg
  break;
  case 'image/jpeg' : $nameback='.jpg';  //jpg
  break;
  case 'image/gif' : $nameback='.gif';  //gif
  break;
  case 'image/png' : $nameback='.png'; //png
  break;
  case 'image/bmp' : $nameback='.bmp'; //bmp
  break;
  case exit('类型犯规!');
 
} //switch end

///////////////////////////////////////////
//
//以下是对文件进行上传后处理,包括更改文件名、写入数据库。(当然还可以加入判断是否有重复文件等,这里就不做实例了。)
//
///////////////////////////////////////////
if($nameback && $error==0){
  $filename='UF_' . date("Ymdhs") . $nameback;  //新文件名的命名规则中间的是时间,就是这一步,可以在一定程序上防止被恶意上传;
 
  $fileplace='uploads/' . $filename; //上传后要修改的文件(包括目录)
  $fileroot='uploads/';  //上传后文件放置目录;
  file_put_contents("catcah.txt",$tmp_name); //存放临时文件名
  move_uploaded_file($tmp_name, $fileplace);  //注意,这里放的是包括目录和文件名的变量哦,并且在这个过程中,上传的文件名也更改啦。

 
  $username = mysql_real_escape_string($_POST['username']);
 
  $query =@mysql_query( "INSERT INTO `$username`(`fname`,`file`)VALUES('$filename','$uploadfile')")or die("error");
}//last if end

}//upload  and  writefile end(the first if end)


?>


不过看你的另一个字段已经写进去了,好像不应该是数据库的问题,也许是$_FILES['Filedata']["name"]根本就没有取到值?,你不妨在那里echo一下,看看是不是有取到,要学会如何调试哦,调式能力可以考验一个phper水准的重要项目啊。