当我从网站上传文件到我的服务器时,它工作正常。但是,当我尝试下载它们时,文件每次都会损坏。如果我在服务器上打开文件管理器,我可以通过它下载文件,它们工作正常。我知道文件上传正常,下载过程似乎是一个错误。
文件保存在我的服务器上,其名称由表中的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.' ');
}
下载文件时,它的名称正确。我不确定这是哪里出错的。我没有正确打开文件吗?
编辑 - 在我的服务文件功能中调整了我的扩展程序
答案 0 :(得分:1)
听起来很奇怪,我在过去查看“.jpeg”文件扩展名时遇到了问题(我有一个人们必须上传产品图片的网站)。但是,可以将扩展名重命名为“.jpg”并查看相同的文件而不进行任何中断。您可以尝试在上传时将“.jpeg”扩展名重命名为“.jpg”,然后查看下载/查看的结果是否不会更改。