xHtml скачать файл на жесткий диск - PullRequest
0 голосов
/ 20 августа 2011

Можно ли загрузить файл с моего сервера непосредственно на жесткий диск пользователя? когда я пытаюсь загрузить файл CSS, мой браузер просто открывает файл CSS в новом браузере (почти как в Microsoft Word). Я хочу, чтобы у пользователя был фактический файл css.

код

<a href="Stylesheets/custom.css" rel="external">Download This File</a>

Ответы [ 2 ]

1 голос
/ 20 августа 2011

Если вы используете Apache и / или PHP и можете изменить конфигурацию вашего сервера или (возможно, в зависимости от ограничений) использовать файл htaccess, вам необходимо установить заголовок Content-Disposition для отправки с сервера ( или в отдельном файле PHP, если используется PHP). Не уверены, что потребуется, если вы используете ASP или не используете язык программирования ..

Этот пример из PHP.net :

// We'll be outputting a PDF
header('Content-type: application/pdf');
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('original.pdf');

В вашем случае будет:

// We'll be outputting a CSS
header('Content-type: text/css'); // if this doesnt work, try application/octet-stream instead of text/css
// It will be called custom.css
header('Content-Disposition: attachment; filename="custom.css"');
// The CSS source is in custom.css
readfile('custom.css'); // http://php.net/manual/en/function.readfile.php

Это означает, что вам нужно либо создать страницу PHP с указанным выше кодом, и вместо этого создать ссылку на нее, либо добавить что-то подобное в htaccess:

<FilesMatch "(?i)^.*custom.css$">
   Header set Content-Disposition attachment
</FilesMatch>

Обновление: поцарапайте вещь htaccess. Это, вероятно, заставит вас загружать таблицы стилей, которые будут отображаться на вашей странице, если только вы не использовали другое условие типа соответствия файлов и не имели файлов, которые пользователи хотели загружать в отдельную папку.

1 голос
/ 20 августа 2011

Если вы хотите вызвать запрос на загрузку, самый простой способ сделать это - использовать какой-нибудь серверный язык сценариев для изменения заголовков, чтобы они включали Content-Disposition: attachment; filename="file.ext". Это очень просто в PHP, но это действительно зависит от того, какие языки / возможности доступны на вашем сервере.

Есть некоторые вещи, которые вы можете сделать с самой конфигурацией сервера, чтобы заставить это также - то, как вы это делаете, зависит от сервера, на котором вы работаете.

Если вы хотите сделать это на PHP, вот короткий пример:

getcss.php (находится в том же каталоге, что и файл HTML со ссылкой в ​​нем)

<?php

  if (!isset($_GET['file']) || !file_exists($_GET['file'])) {
    header('HTTP/1.1 404 File Not Found');
    exit;
  }

  header('Content-Type: text/css');
  header('Content-Length: '.filesize($_GET['file']));
  header('Content-Disposition: attachment; filename="'.basename($_GET['file']).'"');
  readfile($_GET['file']);
  exit;

?>

Тогда ваша ссылка будет:

<a href="getcss.php?file=Stylesheets/custom.css">Download This File</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...