Что нужно заменить чтоб скрипт скачивал картинку в исходном формате.после загрузки формат jpg так и остается ,только картинка больше не открывается <?php require "db.php";
if (isset($_GET['id'])) { $id = $_GET['id'];
$sql = "SELECT * FROM 3_images WHERE id=?"; $stmt = $db->prepare($sql); $stmt->bind_param("i", $id); $stmt->execute(); $result = $stmt->get_result();
Может быть несколько причин, почему изображение не открывается после скачивания:
1. Файл может быть повреждён из-за неправильного способа записи на диск. 2. Неправильный MIME-тип в заголовках ответа сервера. 3. Проблемы с правами доступа к файлу на сервере.
Чтобы сохранить оригинальный формат файла, убедитесь, что при скачивании не происходит его изменение. Проверьте правильность MIME-типа и наличие файла в директории 'upload/'. Попробуйте также проверить, не повреждается ли файл при загрузке на сервер.
<?php
require "db.php";
if (isset($_GET['id'])) {
$id = $_GET['id'];
$sql = "SELECT * FROM 3_images WHERE id=?";
$stmt = $db->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$filename = 'upload/' . $row["img"];
if (file_exists($filename)) {
$finfo = new finfo(FILEINFO_MIME);
$mime_type = finfo_file($finfo, $filename);
finfo_close($finfo);
header('Content-Description: File Transfer');
header('Content-Type: ' . $mime_type);
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
} else {
echo "The file $filename does not exist.";
}
} else {
echo "No record matches the provided id.";
}
} else {
echo "No id provided.";
}
?>