我有一个基本的HTML概念.我想在我的示例网站中创建下载链接,但我不知道如何创建它.如何建立链接以下载文件而不是访问它?
我的网站上有一些大尺寸的PDF目录,我需要将它们作为下载链接.当我用Google搜索时,我发现下面有这样的事情.它应该在链接点击时打开" 另存为... "弹出窗口...
<head>
<meta name="content-disposition" content="inline; filename=filename.pdf">
...
Run Code Online (Sandbox Code Playgroud)
但它不起作用:/当我链接到如下文件时,它只链接到文件,并试图打开该文件.
<a href="filename.pdf" title="Filie Name">File name</a>
Run Code Online (Sandbox Code Playgroud)
更新(根据以下答案):
我认为没有100%可靠的跨浏览器解决方案.可能最好的方法是使用下面列出的一个Web服务,并提供下载链接...
我想要在用户使用PHP访问网页时下载文件.我认为它与某些事情有关file_get_contents,但我不确定如何执行它.
$url = "http://example.com/go.exe";
Run Code Online (Sandbox Code Playgroud)
下载文件后,header(location)它不会重定向到另一个页面.它就停止了.
我目前正在开发一个PHP脚本,允许您通过访问链接从移动设备下载媒体内容(视频,音频,图片...).(即http://www.my-web-site.com/download.php?id=7ejs8ap)当我用最近的手机(三星Galaxy S,iPhone 4S,其他一些人)测试时,我的脚本非常有用. )但我的旧手机三星C3050出现错误.我想下载的媒体只是一个音频mp3文件,我通常很容易下载.
该错误似乎是"未知内容类型".因此,由于我唯一的HTTP标头Content-Type是"application/force-download",我尝试对此进行评论并再试一次.然后,它的工作原理.但是现在,我目前正在询问这种内容类型的含义以及是否可以强制其他移动设备.我在iPhone 4上没有使用Content-Type进行测试,但它确实有效,但我不确定所有移动设备的兼容性.
有人可以解释一下Content-Type是如何工作的,为什么这不是标准的MIME或其他所有可以帮助我确保这是每个下载的选项内容类型,无论文件,浏览器或设备是什么我正在下载?
感谢大家.
这是我发送的PHP标头:
<?php
//Assume that $filename and $filePath are correclty set.
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$filename.'"');
// header('Content-Type: application/force-download'); Non-standard MIME-Type, incompatible with Samsung C3050 for example. Let it commented
readfile($filePath);
?>
Run Code Online (Sandbox Code Playgroud)
编辑:我刚试过索尼Xperia,下载不成功:我只看到我要下载的文件的"html编码"字节.如果application/octet-stream或application/force-download不起作用,我怎么知道我必须使用哪种内容类型?
我创建了一个简单的HTTP服务器,允许用户下载文件.但这似乎不适用于mp3文件.目前的内容类型是"application/misc".为了使它与mp3文件一起使用,我试过了"application/mp3","application/data"并且"application/mpeg".
什么是正确的MP3或音频文件下载内容类型,我错过了一些其他标题?
编辑:文件应自动开始下载,而不是提示用户将其保存在某处.
我正在使用强制下载主要下载网站上的拉链和mp3(http://pr1pad.kissyour.net) - 跟踪谷歌分析,数据库中的下载并隐藏真正的下载路径:
就是这样:
extending CI model
... - bunch of code
function _fullread ($sd, $len) {
$ret = '';
$read = 0;
while ($read < $len && ($buf = fread($sd, $len - $read))) {
$read += strlen($buf);
$ret .= $buf;
}
return $ret;
}
function download(){
/* DOWNLOAD ITSELF */
ini_set('memory_limit', '160M');
apache_setenv('no-gzip', '1');
ob_end_flush();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public",FALSE);
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) …Run Code Online (Sandbox Code Playgroud) 我使用以下链接创建一个类似结构的树: LINK
这是我的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tree Context Menu - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="themes/icon.css">
<link rel="stylesheet" type="text/css" href="demo.css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.easyui.min.js"></script>
</head>
<body>
<h2>Tree Context Menu and Drag Drop Tree Nodes</h2>
<p>Right click on a node to display context menu.</p>
<p>Press mouse down and drag a node to another position.</p>
<div style="margin:20px 0;"></div>
<div class="easyui-panel" style="padding:5px">
<ul id="tt" class="easyui-tree" data-options="
url: 'tree_data1.json',
method: 'get',
animate: true,
dnd:true, …Run Code Online (Sandbox Code Playgroud) 基本上我写了一个脚本,根据用户输入生成一个xml文件.生成文件后,下载链接如下所示:
<a href="path/to/file.xml">Download File</a>
Run Code Online (Sandbox Code Playgroud)
但是当点击它在浏览器中打开xml时,我希望它在它点击的链接时开始下载.有没有办法实现这一目标?
我已经构建了一个简单的文件管理器,用户可以下载任何类型的文件,如pdf,word或gif文件.我希望他们所有人都下载文件,而不是在浏览器中查看它.上传的文件名存储在数据库中.
我试图使用PHP强制下载客户端计算机(文件对话框 - 没有任何险恶).我发现很多页面建议我使用header()函数来控制PHP脚本的响应,但我没有运气.我的代码如下:
$file = $_POST['fname'];
if(!($baseDir . '\\AgcommandPortal\\agcommand\\php\\utils\\ISOxml\\' . $file)) {
die('File not found.');
} else {
header('Pragma: public');
header('Content-disposition: attachment; filename="tasks.zip"');
header('Content-type: application/force-download');
header('Content-Length: ' . filesize($file));
header('Content-Description: File Transfer');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
ob_end_clean();
readfile($baseDir . '\\AgcommandPortal\\agcommand\\php\\utils\\ISOxml\\' . $file);
}
Run Code Online (Sandbox Code Playgroud)
我用这个JavaScript调用它:
$.ajax({
url: url,
success: function(text) {
var req = new XMLHttpRequest();
req.open("POST", 'php/utils/getXMLfile.php', true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send('fname=' + encodeURIComponent(text));
}
});
Run Code Online (Sandbox Code Playgroud)
这将文件的内容作为文本返回,但不会触发下载对话框.有没有人有什么建议?
我有一个下载页面,我保存了音乐,图片,电子书等.每当用户点击图像时它会打开它,如果用户在他们的PC上安装了pdf阅读器,那么.pdf文件会发生同样的事情吗?
我不希望他们打开文件但下载它?有任何想法吗
php ×8
download ×7
html ×3
pdf ×3
http-headers ×2
javascript ×2
json ×2
content-type ×1
file ×1
header ×1
http ×1
httpresponse ×1
jquery ×1
meta-tags ×1
mobile ×1
mp3 ×1
save ×1