当我从站点将文件上传到我的服务器时,它工作正常。但是,当我尝试下载它们时,文件每次都会损坏。如果我打开服务器上的文件管理器,我可以通过它下载文件,它们工作正常。我知道文件上传正常,下载过程似乎有错误。
这些文件保存在我的服务器上,由它们在表中的 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.' ');
}
下载文件时,它具有正确的名称。我不确定这是哪里出错了。我没有正确打开文件吗?
编辑 - 在我的 serverfile 函数中调整了我的扩展名