Есть ли способ заставить пользователь-загрузчик-менеджер запускать загрузку для .PDF вместо отображения .PDF в новом окне/вкладке?
Как принудительно загрузить PDF файл автоматически?
Ответ 1
используйте скачать атрибут внутри тега <a>
<a href="content/file.pdf" download > pdf link </a>
<a href="content/file.doc" download > doc link </a>
Ответ 2
Установите Content-Disposition в заголовке HttpResponse:
Content-Disposition = 'attachment; filename=filename.pdf'
Ответ 3
Это необходимо сделать на стороне сервера. Вы не можете сделать это на стороне клиента.
Как это сделать, зависит от языка на стороне сервера.
PHP:
header('Content-Disposition: attachment; filename="' . $filename . '"');
Java:
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
.NET:
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
Если нет какого-либо кода на стороне сервера, который передает файл PDF, вам необходимо настроить его на уровне веб-сервера. Например, Apache HTTPD, вы можете поместить/развернуть файл .htaccess
в корне папки PDF со следующей записью:
<Files *.pdf>
Header set Content-Disposition attachment
</Files>
или настроить его глобально в файле httpd.conf
. Аналогичный подход существует для IIS с файлом web.config
.
Ответ 4
Для IIS:
Поместите все файлы, которые вы хотите загрузить, в свою папку.
Затем в IIS перейдите в эту папку и дважды щелкните заголовки HTTP-ответа.
Добавьте новый заголовок со следующей информацией:
Имя: Content-Disposition
Значение: вложение
Все файлы в этой папке при доступе должны запрашивать диалоговое окно сохранения в соответствующем браузере.
Ответ 5
Для этого вам нужно отправить HTTP-заголовки (Content-disposition
). Вы не можете сделать это на стороне клиента.
Ответ 6
<?php
header('Content-disposition: attachment; filename=filename.pdf');
header('Content-type: application/pdf');
readfile('path/to/filename.pdf');
Ответ 7
Да, это можно сделать на странице JSP... Предоставляя ссылку "Загрузка" на странице "Один JSP", на которой идет новая страница script... и загружайте файл PDF следующим образом
Код DownloadPage.JSP: -
<a href='downloadPdf.jsp?file=FILE.pdf' >Download PDF File</a>
скачатьPdf.JSP код: -
<%@ page import="java.util.*,java.io.*"%>
<%
File f = new File ("E:/PDFfiles/Downloads/" + request.getParameter("file") );
response.setContentType ("application/pdf");
response.setHeader ("Content-Disposition", "attachment; filename=""+request.getParameter("file")+""");
String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());
InputStream in = new FileInputStream(f);
ServletOutputStream outs = response.getOutputStream();
int bit = 256;
int i = 0;
try {
while ((bit) >= 0) {
bit = in.read();
outs.write(bit);
}
}
catch (IOException ioe) {
ioe.printStackTrace(System.out);
}
outs.flush();
outs.close();
in.close();
%>
Источник: http://bloggerplugnplay.blogspot.in/2012/05/how-to-create-force-download-link-for.html
Ответ 8
.htaccess:
AddType application/octet-stream .pdf
Ответ 9
<?php
// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
}
$reader = fopen($filename, "r");
$contents = fread($reader, filesize($filename));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_end_clean();
echo $contents;
Ответ 10
Из кода vb asp net, найденного в Интернете, я сделал эту простую страницу С# download.aspx. Вы можете использовать с URL-адресом файла, переданным как параметр "f" querystring. (/folder/download.aspx?f=/folder1/example.pdf).
<!DOCTYPE html>
<html>
<head><title></title>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
String strRequest = "";
try
{
strRequest = Request.QueryString["f"].ToString();
}
catch
{ }
if (strRequest.Length > 0)
{
String path = Server.MapPath(strRequest);
System.IO.FileInfo File = new System.IO.FileInfo(path);
if (File.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + File.Name);
Response.AddHeader("Content-Length", File.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(File.FullName);
Response.End();
};
}
}
</script>
</head>
<body></body>
</html>