我正在尝试通过使用按钮使用PHP从服务器下载文件。
文件正在下载中,工作正常。但是,每当我尝试下载文件时,文件名都会更改为未知文件格式“ .pn1,.pn5等”,而不是PNG。
这是下载文件的按钮
<a href="download.php"></a>
这是我的下载PHP。
$value = custom_query("SELECT * FROM tbl_training ORDER BY id DESC LIMIT
1");
if($value->rowCount()>0) {
while ($r = $value->fetch(PDO::FETCH_ASSOC)) {
$test_id = substr($r['test_id'], -1);
$new_id = $test_id + 1;
$new_file_name = substr($r['test_id'], 0, -1) . "" . $new_id;
}
}
header ("Content-Disposition: attachment; filename='$new_file_name.png'");
header("Content-Length: " . filesize("1234-56689.png"));
header("Content-Type: application/octet-stream;");
readfile("1234-56689.png");
echo $ab = AB(50);
$abtf= ABTF(50);
$tf = TF(50);
$ab_result = substr($ab, 0, -1);
$abtf_result = substr($abtf, 0, -1);
$tf_result = substr($tf, 0, -1);
$data1 = array(
"test_id"=>$new_file_name,
"stud_id"=>$new_file_name,
"section"=>"Section A",
"a_key"=>$ab_result
);
$data2 = array(
"test_id"=>$new_file_name,
"stud_id"=>$new_file_name,
"section"=>"Section A",
"a_key"=>$abtf_result
);
$data3 = array(
"test_id"=>$new_file_name,
"stud_id"=>$new_file_name,
"section"=>"Section A",
"a_key"=>$tf_result
);
db_insert('tbl_training', $data1);
db_insert('tbl_training_abtf', $data2);
db_insert('tbl_training_tf', $data3);
感谢您对我的帮助! :)
答案 0 :(得分:1)
使用时...
$new_file_name = substr($r['test_id'], 0, -1) . "" . $new_id;
您只是从字符串中删除了最后一个字符,然后添加了ID。如果此字符串包含"1234.png"
,则最终会得到类似"1234.pn1"
的内容。因此,值得检查您的数据库以查看这些文件名实际包含的内容。
这反而确保了它通过在“。”之前加上字符串来删除扩展名。然后将.png
扩展名重新添加到您的header
输出中...
$new_file_name = strstr($r['test_id'], ".", true) . $new_id;