作者yohko ()
看板PHP
標題[請益] 關於檔案上傳
時間Mon Jan 14 02:34:18 2008
小弟寫了一個檔案上傳的程式,可以成功的上傳到資料夾
在資料夾裡面看檔案也都是正確,而且也跟上傳的檔案是一樣的
但是如果透過apache下載下來,檔案就壞掉了,請問這問題是出在哪呢?
我使用的環境是AppServ 2.5.9 + windows XP
(因為要用mysql跟apache又偷懶不想分開灌...^^;)
===還是貼code好了,寫的很爛高手別鞭太用力>_<
<?php
include "filesize.php";
$file_name = $_COOKIE["std_team"];
$file_size = $_FILES["up_file"]["size"];
$uploader_dir = "./files/";
$old_filename = $_FILES["up_file"]["name"];
$ext = strrchr($old_filename, '.');
$newname = "team".$file_name.$ext;
$uploader_file = $uploader_dir .$newname;
$md5ex = md5($old_filename);
if (move_uploaded_file($_FILES['up_file']['tmp_name'] , $uploader_file)){
$up_date = time();//取得上傳完成時間
$link = mysql_connect("localhost","orz","1234");//連資料庫
if (!$link){
die("連結失敗");
}
$db_selected = mysql_select_db("project",$link);
if (!$db_selected){
die("開啟資料庫失敗");
}
$sql = "update team set uploaded = '1' , up_time = '$up_date' , file_name =
'$uploader_dir$newname' , md5 = '$md5ex' , file_size = '$file_size' where
team = '$file_name'";
$result = mysql_query($sql,$link);
if (!$result){
echo $htmlhd;
die("執行SQL失敗");
echo $htmlft;
}
mysql_close($link);//關資料庫
echo '<head><meta http-equiv="content-type"
content="text/html;charset=utf-8"></head><center><table border=0>';
echo "<tr>上傳成功</tr>";
echo "<tr>檔案大小:".FormatByte($file_size)."</tr>";
echo "<tr>MD5驗證:".$md5ex."</tr>";
echo "<tr><a href=".$uploader_dir.$newname.">檢視檔案</a>";
echo "<tr><a href= javascript:history.back()>回上一頁</a></tr>";
echo "</table></center>";
}
else{
echo "上傳失敗(".$_FILES["up_file"]["error"].")";
}
?>
==filesize.php
<?php
function FormatByte($file_size){
if($file_size == 0){
$format = "";
}
else if($file_size <= 1024){
$format = $file_size."B";
}
else if($file_size <= (1024*1024)){
$format = sprintf ("%dkB",($file_size/1024));
}
else if($file_size <= (10*1024*1024)){
$format = sprintf ("%.2fMB",($file_size/(1024*1024)));
}
else{
$format = $file_size."B";
}
return $format;
}
?>
--
◤◢ ◤ ◥
◤ ◤ o ├─┤ o ◥
◢◣◥◤◢ │ │
◆ ◢ ◣ ╲╱ ◢
◤◢ ◣ ◢ fishhzy123ψ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.15.57
推 JoeHorn:壞掉是指...? 上傳後自己到上傳的資料夾開看看。 01/14 02:54
→ JoeHorn:別用中文檔名,除非你用程式處理好下載的方式。 01/14 02:57
→ yohko:就是下載下來的檔案不能開 我有用程式處理更名成英文 01/14 15:02
→ appleboy46:檔案超過 2M? 01/14 15:16
→ yohko:就算只有幾k的也會 ~_~ 01/14 15:53
→ aitch:所謂不能開是指你的WINDOWS不知道如何處理你下載的檔案嗎? 01/14 18:52
→ aitch:副檔名是什麼?你處理副檔名的方式對嗎? 01/14 18:53
→ aitch:中文檔名可以用mb_convert_encoding()處理中文檔名。 01/14 18:53
※ 編輯: yohko 來自: 220.134.15.57 (01/14 23:44)
※ 編輯: yohko 來自: 220.134.15.57 (01/15 02:13)
推 JeffMcBride:檔案跟下載後的檔案拿來比較看改變了什麼部份試試 01/15 21:39