作者alpe (薛丁格的猫)
看板PHP
标题Re: [请益] 上传前先做档名比对,但还是要上传完才 …
时间Fri Aug 18 03:15:14 2006
自己写的 放上来让大家批评一下
/* 2006.7.xx ; alpe ; upload processer
return true / false
(object) $db = DB Class
(Mix) $i = <input type='file' name='XX'>
(string) $targetdir = move file to
(Array) $data = extra infomations
*/
function uploadfile(&$db, $i ,$targetdir, $data) {
if ( !isset($_FILES["f"]["name"][$i]) &&
$_FILES["f"]["error"][$i] != 0) return ;
$dir = $_SERVER["DOCUMENT_ROOT"] .
dirname($_SERVER["SCRIPT_NAME"])."/";
$upto = str_replace("/* file locatio directory */
", $targetdir, $dir);
//errchk echo $upto . "<br/>";
$size = $_FILES["f"]["size"][$i];
$name = $_FILES["f"]["name"][$i];
$ftype = $_FILES["f"]["type"][$i];
$tname = $_FILES["f"]["tmp_name"][$i];
$fname = md5(time() .$name. rand());
$size = floor($size/1024);
$dat = date("Y-m-d");
$adj = explode('.', $name);
$tmp = count($adj)-1;
$adj = $adj[$tmp];
if (is_numeric($data["Cata"])) $Scate = $data["Cata"];
$Sname = $data["name"].".$adj" ;
$Sver = $data["ver"];
$Snote = $data["note"];
$sql = "INSERT INTO FileB SET Loc = '$fname', name = '$Sname',
app = '$ftype',
ver ='$Sver', Cata = '$Scate', note = '$Snote' ,size='$size',
fdate = '$dat'";
if(move_uploaded_file($tname, $upto.$fname)){
//errchk echo $sql . "<br>";
$db->query($sql);
return true;
} else {
return false;
}
}
// Cata 是类别
--- 下载用
$db = & new DB();
$db->query($sql);
$data = $db->fetchAssoc();
$fname = "files/".$data["Loc"];
$name = $data["name"];
$size = $data["size"];
$app = $data["app"];
header("Content-Type: $app");
header("Content-Disposition: attachment; filename=$name;");
header("Content-Transfer-Encoding: binary");
if(!file_exists($fname)) die(" file was gone!");
$handle = fopen($fname, "r");
$contents = fread($handle, filesize($fname));
fclose($handle);
print ($contents);
flush();
: 推 piligo:谢谢以上各位,不过我的问题真的没办法上传前就做比对吗? 08/15 18:37
谁晓得他们传什麽东西上去... ... 档名一样内容不一样
他们还要再改档名,会被碎碎念吧
: 推 ottokang:AJAX是你的好朋友 08/16 01:51
档名我是真的不推用ajax检查...
--
Live Long and Prosper
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.25.33