Открыть окно сохранить файл html

Принудительно открывать всплывающее окно «Сохранить как…», открывать по текстовой ссылке, щелкать PDF в HTML

У меня на моем веб-сайте есть каталоги большого размера pdf, и мне нужно связать их как загрузку. Когда я googled, я нашел такую ​​вещь, отмеченную ниже. Он должен открыть всплывающее окно Сохранить как. «. Нажмите

но он не работает:/когда я ссылаюсь на файл, как показано ниже, он просто ссылается на файл и пытается открыть файл.

Я попробовал ваше обновленное решение, artmania — но возникла та же проблема, что и у меня в Safari. Я получаю то, что выглядит как PDF, в окне браузера, и только когда я нажимаю на вкладки «предварительный просмотр» или «скачать» внизу, я получаю функцию поиска, которая мне так необходима.

15 ответов

На момент написания этого комментария атрибут download ограничен Chrome, Firefox и Opera. Даже последние версии IE и Safari не поддерживают его. Для дальнейшей поддержки: проверьте caniuse.com/#feat=download !

Проверка ошибок NetBeans жалуется на это, но, кажется, работает нормально. Вы можете указать предварительное имя для нового файла следующим образом: download = «myFile.txt»

Это работает в Edge на момент написания этого комментария и кажется единственным способом остановить открытие гиперссылок в PDF-файлах из-за очень плохой попытки Edge открыть PDF-просмотрщик.

На момент написания этого комментария я тестировал его на Chrome, Opera, Edge, Mozilla. Все последние. Работает на всех, кроме Mozilla.

Это работает только для ссылок того же источника, как упомянуто на caniuse.com/#feat=download . Если ваши ссылки имеют перекрестное происхождение, единственным вариантом (на данный момент) является принудительный выбор типа ответа «application / octet-stream», как предлагают многие ответы. Если у вас нет доступа к серверу, вы можете попробовать прокси-сервер и установить заголовок ответа вручную.

@jean-baptiste jean-baptiste согласен . И немного абсурдное ограничение, поскольку оно сильно ограничивает функциональность, в то время как есть много способов обойти презумпцию «защиты»

Он работает для меня в Firefox и Chrome.

Хотя это точно так же, как текущий топ-ответ от Аюша Гупты в 2013 году. target=»_blank» может сделать его несколько более удобным для не поддерживающих браузеров (PDF-файлы затем открываются в новом окне / вкладке, а не перезаписываются). текущая страница).

Для меня target=»_blank» был необходим, так как download не удалась, чтобы запустить загрузку должным образом (Chrome)

Если вы дадите строку в атрибуте download , она будет использоваться как имя файла. Я использую его в пользовательских скриптах все время.

Метатеги не являются надежным способом достижения этого результата. Как правило, вы даже не должны этого делать — он должен быть предоставлен пользователю/пользовательскому агенту, чтобы решить, что делать с предоставленным вами контентом. Пользователь всегда может заставить свой браузер загружать файл, если захочет.

Читайте также:  Otf шрифты для css

Если вы все еще хотите заставить браузер загружать файл, измените HTTP-заголовки напрямую. Вот пример кода PHP:

$path = "path/to/file.pdf"; $filename = "file.pdf"; header('Content-Transfer-Encoding: binary'); // For Gecko browsers mainly header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT'); header('Accept-Ranges: bytes'); // Allow support for download resume header('Content-Length: ' . filesize($path)); // File size header('Content-Encoding: none'); header('Content-Type: application/pdf'); // Change the mime type if the file is not PDF header('Content-Disposition: attachment; filename=' . $filename); // Make the browser display the Save As dialog readfile($path); // This is necessary in order to get it to actually download the file, otherwise it will be 0Kb 

Обратите внимание, что это просто расширение HTTP-протокола; некоторые браузеры могут его игнорировать.

Это лучшее решение, без проблем и работает. Вы можете напрямую скачать любой тип файла, используя этот метод. +1

ЗАМЕТЬТЕ в своем ответе, что ЕСЛИ файл с внешнего сервера / домена, то этот ответ может не быть решением .

Я хотел бы добавить, что у меня был сбой этого или аналогичного кода на некоторых серверах, когда файлы становятся большими (> 80 МБ в моем случае). Использование ob_end_flush() тоже не помогло.

«пользователь / пользовательский агент должен решать, что делать с контентом, который вы предоставляете» — зависит от того, какой у вас пользователь. У нас есть сотрудники-сотрудники, а также клиенты для некоторых из наших форм .pdf, где поведение, особенно поведение печати, сильно отличается от браузера к браузеру и сильно отличается от приложения для чтения PDF-файлов тем, как оно отображает изображения. Элементы исчезают, толстые границы поля создаются из воздуха . нам нужно, чтобы наши пользователи открывали определенные PDF-файлы из PDF-приложения, а не из браузера.

Это действительно старая нить, на которую я наткнулся, поэтому я уверен, что все это было выяснено. Имел эту же проблему и нашел решение, которое до сих пор отлично работало. Вы поместите следующий код в свой файл .htaccess:

 ForceType application/octet-stream Header set Content-Disposition attachment 

Это работало хорошо, так как у меня был определенный каталог документов для скачивания. Я опустил ForceType, чтобы типы оставались как есть. Мне также не нужен регистронезависимый; мой, кажется, уже без учета регистра. Я добавил пару дополнительных типов, в том числе option-x для старых / новых расширений Office:

Это прекрасно работает даже в OSX Safari, где другие ответы (включая принятый, как указал один комментатор) ограничены определенными браузерами, которые поддерживают данную функцию HTML. Этот вариант кажется мне более идеальным, поскольку он работал по всем направлениям, хотя для него требуется более высокий доступ к файлам конфигурации сервера.

Вы также можете поместить это прямо в файл apache.conf, я не использую .htaccess, так как он требует больше ресурсов.

A действительно простой способ достичь этого, без использования внешних загрузочных сайтов или модификаций заголовков и т.д. — просто создать ZIP файл с PDF внутри и напрямую связать его с ZIP файлом. Это ВСЕГДА запускает диалог «Сохранить/Открыть», и для людей все равно легко дважды щелкнуть окна PDF, запускается программа, связанная с запуском .zip.

Читайте также:  Пример xml с css

Отличный вопрос, я тоже искал ответ, так как большинство встроенных в PDF плагинов PDF забирают sooo, чтобы отображать что угодно (и часто будут зависать в браузере во время загрузки PDF файла).

Не очень хорошее решение У меня точно такая проблема с Firefox и файлом ZIP. Что я должен делать? ZIP файл? В этом случае изменение заголовков HTTP может быть решением, но у меня нет доступа к этому.

Как правило, это происходит, потому что некоторые настройки браузеров или плагины напрямую открывают PDF в том же окне, что и простая веб-страница. Это может вам помочь. Я сделал это в PHP несколько лет назад. Но в настоящее время я не работаю на этой платформе.

 > else < header("HTTP/1.0 404 Not Found"); echo "

Error 404: File Not Found:
$file

"; > ?>

Сохраните выше, как download.php

Сохраните этот маленький фрагмент в виде файла PHP где-то на вашем сервере, и вы можете использовать его, чтобы сделать загрузку файла в браузере, а не отображать напрямую. Если вы хотите обслуживать файлы, отличные от PDF, удалите или отредактируйте строку 5.

Вы можете использовать его так:

Добавьте в свой HTML файл следующую ссылку.

Похоже, это хороший способ подать каждый файл на вашем сервере всем, кто обращает на это внимание. Например, download.php?file=database_password_file.php .

Попробуйте добавить эту строку к файлу .htaccess.

AddType application/octet-stream .pdf

Мне было бы интересно узнать, почему это было отклонено — это один из самых простых методов и работает: css-tricks.com/snippets/htaccess/…

Люди пытаются изменить базовую функциональность сервера на бесплатных хостинг-сайтах, а затем понижают голос, потому что не могут заставить его работать. Любое другое решение будет иметь предостережения, потому что это «взлом», чтобы заменить это.

Я не одобряю это, потому что это неправильное решение проблемы. Это плохая идея, чтобы связываться с типами ресурсов.

@NathanHornby — я не отрицал это, но это не сработало бы для любого размещенного на Windows сайта, так как они не используют .htaccess.

Я не понизил голос, но это решение слепо влияет на ВСЕ файлы этого суффикса. Это неизбирательно и поэтому не будет уместным во всех случаях.

Он может быть независимым от браузера, но разве это не зависит от того, является ли веб-сервер Apache ?

Я нашел очень простое решение для firefox (работает только с относительным, а не прямым href): add type = «application/octet-stream»

@Martin Chrome для Chrome OS и Firefox для Linux. Оказывается, файл должен быть локальным, чтобы он работал. Моя ссылка была ссылкой на облачное хранилище.

Решение на стороне сервера более совместимо, пока атрибут «загрузка» не будет реализован во всех браузерах.

Читайте также:  How to add space in html

Один пример python может быть настраиваемым обработчиком запросов HTTP для филереста. Ссылки, указывающие на filestore, генерируются следующим образом:

class HTTPFilestoreHandler(SimpleHTTPRequestHandler): def __init__(self, fs_path, *args): self.fs_path = fs_path # filestore path SimpleHTTPRequestHandler.__init__(self, *args) def send_head(self): # overwrite SimpleHTTPRequestHandler.send_head to force download name path = self.path get_index = (path == '/') self.log_message("path: %s" % path) if '/download_as/' in path: p_parts = path.split('/download_as/') assert len(p_parts) == 2, 'Bad download link:' + path path, download_as = p_parts path = self.translate_path(path ) f = None if os.path.isdir(path): if not self.path.endswith('/'): # redirect browser - doing basically what apache does self.send_response(301) self.send_header("Location", self.path + "/") self.end_headers() return None else: return self.list_directory(path) ctype = self.guess_type(path) try: f = open(path, 'rb') except IOError: self.send_error(404, "File not found") return None self.send_response(200) self.send_header("Content-type", ctype) fs = os.fstat(f.fileno()) self.send_header("Expires", '0') self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) self.send_header("Cache-Control", 'must-revalidate, post-check=0, pre-check=0') self.send_header("Content-Transfer-Encoding", 'binary') if download_as: self.send_header("Content-Disposition", 'attachment; filename="%s"' % download_as) self.send_header("Content-Length", str(fs[6])) self.send_header("Connection", 'close') self.end_headers() return f class HTTPFilestoreServer: def __init__(self, fs_path, server_address): def handler(*args): newHandler = HTTPFilestoreHandler(fs_path, *args) newHandler.protocol_version = "HTTP/1.0" self.server = BaseHTTPServer.HTTPServer(server_address, handler) def serve_forever(self, *args): self.server.serve_forever(*args) def start_server(fs_path, ip_address, port): server_address = (ip_address, port) httpd = HTTPFilestoreServer(fs_path, server_address) sa = httpd.server.socket.getsockname() print "Serving HTTP on", sa[0], "port", sa[1], ". " httpd.serve_forever() 

Источник

Запись текста со страницы в .txt файл для скачивания

Запись текста со страницы в .txt файл для скачивания

Сохранение происходит при нажатии на кнопку и сохраняется в файл с заданным именем в формате TXT.

Данное решение может пригодится для сохранения данных, которые нет необходимости выдавать на печать.

Пример:

Ссылка этой заметки: https://atuin.ru/blog/zapis-teksta-so-stranicy-v-fajl-dlya-skachivaniya
Наименование: Чудо-юдо прибор
Модель: 35567
Артикул: 56742-567
Цвет: Зеленый
Цена: 199 999 руб.

Сохранить данные в файл

При создании файла учитываются все отступы и переносы строк в коде внутри тега copytext

Стили таблицы и кнопки используются только для примера.

HTML:

В первой строке добавлена скрытая информация только для копирования

JS:

Сохранение происходит по нажатию на элемент с ID download

  • Опубликовано: 01.10.2021 / Обновлено: 04.04.2022
  • Рубрики: Тексты, ссылки и кнопки — простые решения
  • Метки: JavaScript
  • 6831 просмотр

Смотрите также:

Background для текста

Background для текста

Наложение графического или градиентного фона на текст

Прозрачный текст на CSS

Прозрачный текст на CSS

Прозрачный текст c помощью CSS свойства mix-blend-mode

Стилизация зачеркнутого текста на CSS

Стилизация зачеркнутого текста на CSS

Оформление зачеркнутого текста тега на CSS

Добавить комментарий:

Комментарии:

Круто было бы, если бы был пример бланка с онлайн заполнением и после этого можно было вывести заполненный бланк на печать или на сохранение в Microsoft Word. Спасибо за ваши труды. Очень познавательный сайт с крутыми темами!

Я делал похожие документы, например вот
Также добавлял запоминание полей формы и редактирование прямо на листе.
Но это все муторный процесс 🙂
Про сохранение в ворд все собираюсь тему сделать, никак руки не дойдут.

html2pdf.js (о нем позже напишу в отдельной теме)
или jsPDF (оно более сложное, но PDF делает не из картинки)

Источник

Оцените статью