Подтвердить что ты не робот

Как автоматически начать загрузку в PHP?

Какой код вам нужно добавить в PHP, чтобы автоматически загрузить браузер на локальный компьютер при посещении ссылки?

Я специально думаю о функциональности, аналогичной функциональности сайтов загрузки, которые заставляют пользователя сохранять файл на диск после щелчка по имени программного обеспечения?

4b9b3361

Ответ 1

Отправьте следующие заголовки перед выводом файла:

header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($File));
header("Connection: close");

@grom: Интересно о типе MIME 'application/octet-stream'. Я не знал об этом, всегда использовал "application/force-download":)

Ответ 2

Вот пример отправки PDF файла.

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
readfile($filename);

@Swish Я не нашел тип содержимого приложения /force -download, чтобы сделать что-то другое (протестировано в IE и Firefox). Есть ли причина отказа от отправки фактического MIME-типа?

Также в руководстве по PHP Hayley Watson опубликовано:

Если вы хотите, чтобы файл был загружен и сохранен, вместо того, чтобы отображаться, помните, что такого типа MIME нет, как "application/force-download". Правильный тип для использования в этой ситуации - "application/octet-stream", и использование чего-либо еще просто зависит от того, что клиенты должны игнорировать непризнанные типы MIME и вместо этого использовать "приложение/октет-поток" (ссылка: разделы 4.1.4 и 4.5.1 RFC 2046).

Также согласно IANA нет зарегистрированного типа приложения/принудительной загрузки.

Ответ 3

Чистый пример.

<?php
    header('Content-Type: application/download');
    header('Content-Disposition: attachment; filename="example.txt"');
    header("Content-Length: " . filesize("example.txt"));

    $fp = fopen("example.txt", "r");
    fpassthru($fp);
    fclose($fp);
?>

Ответ 4

мой код работает для txt, doc, docx, pdf, ppt, pptx, jpg, png, zip-расширений, и я думаю, что он лучше использует фактические типы MIME явно.

$file_name = "a.txt";

// extracting the extension:
$ext = substr($file_name, strpos($file_name,'.')+1);

header('Content-disposition: attachment; filename='.$file_name);

if(strtolower($ext) == "txt")
{
    header('Content-type: text/plain'); // works for txt only
}
else
{
    header('Content-type: application/'.$ext); // works for all extensions except txt
}
readfile($decrypted_file_path);