當我從網站上傳文件到我的服務器時,它工作正常。但是,當我嘗試下載文件時,每次都會損壞文件。如果我打開我的服務器上的文件管理器,我可以通過它下載文件,它們工作正常。我知道文件上傳好了,它似乎是下載過程中的錯誤。從PHP中損壞文件,上傳文件
這些文件保存在我的服務器上,服務器上的ID由它們的名稱命名,後面跟着它們的擴展名。該名稱從數據庫中檢索並在下載時使用。
id | userid | filename | extension | size
1 2 test.jpeg jpeg 123456
//the extension column is just for testing, yes I know it's redundant
test.jpeg將作爲1.jpeg保存在我的服務器上。
//this is the very first bit of code on the page aside from starting the session
if(isset($_POST['downloadFile'])){
$file = new fileprocessing;
$fileID = mysql_real_escape_string($_POST['hiddenFileDownload']);
$file->serveFile($fileID);
}
這裏是找到該文件,並允許serveFile功能,用戶可以下載它
function serveFile($fileID){
$sql = mysql_query("select * from files where id = '$fileID'");
$file = mysql_fetch_array($sql);
$ext = $file['extension'];
header('Content-type: image/x-generic'); //I'm trying jpegs only right now
header('Content-Disposition: attachment; filename="'.$file['filename'].".".$ext.'" ');
readfile('/home/.../public_html/user_files/'. $fileID.".".$ext.' ');
}
當文件被下載具有正確的名稱。我不確定這是怎麼回事。我沒有正確打開文件?
編輯 - 調整我的分機,我servefile功能
爲什麼你的文字路徑裏有一個'... /'? – alex
這是幾個文件夾深,只是爲了可讀性刪除它。 – user1104854
@ user1104854你的文件中是否有任何隱形的空白字符?物料清單? –