<?php
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水准的重要项目啊。 |
|