Re: [請益] 上傳前先做檔名比對,但還是要上傳完才 …
自己寫的 放上來讓大家批評一下
/* 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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章