在这里,我们将给大家分享关于通过Ajax和PHP强制下载的知识,让您更了解ajaxphp的本质,同时也会涉及到如何更有效地adobeflashplayer9.0下载php强制下载类型的实现代码、jav
在这里,我们将给大家分享关于通过Ajax和PHP强制下载的知识,让您更了解ajax php的本质,同时也会涉及到如何更有效地adobe flash player 9.0下载 php强制下载类型的实现代码、javascript-如何使用PHP强制下载文件?、jQuery通过ajax验证电子邮件,然后再通过ajax提交表单、PHP强制下载.xlsx文件损坏的内容。
本文目录一览:- 通过Ajax和PHP强制下载(ajax php)
- adobe flash player 9.0下载 php强制下载类型的实现代码
- javascript-如何使用PHP强制下载文件?
- jQuery通过ajax验证电子邮件,然后再通过ajax提交表单
- PHP强制下载.xlsx文件损坏
通过Ajax和PHP强制下载(ajax php)
我想创建一个允许强制下载JPG的下载脚本。这是我的PHP脚本:
<?php header("Pragma: public"); // required header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Description: File Transfer"); header("Content-Type: image/jpg"); header(''Content-Disposition: attachment; filename="''.basename($GET[''a'']).''"''); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize(($GET[''a''])); readfile(($GET[''a'']);?>
这是我的js代码的代码段:
function downloadFile(a){ document.location = "download.php?a="+ a;}
使用此代码示例,什么都不会发生。如果我将结果附加到HTML标记中,它将显示文件的内容。
有什么想法可以教浏览器下载此文件吗?
编辑:脚本更新
答案1
小编典典您无法使用Ajax下载文件。因此,如果您在ajax上发生了某些情况,则应返回url作为响应,并像document.location ="url"
开始下载过程一样应用它。
这里有一个音符。我记得,如果不是用户单击启动浏览器,浏览器将阻止文件下载。因此,这将正常工作:
.click(function(){ document.location = "download url"})
但是,如果不是通过用户单击启动它,它将被阻止。因此,这样的代码:
.click(function(){ $.ajax({..., success:function(download_url_from_server){ document.location = download_url_from_server; }}); })
将被浏览器阻止。因此,如果您想在发布时传递一些数据,可以使用以下方法将表单提交到隐藏的iframe或空白页中<form target="..."
:
function checkToken(token){ var $form = $("#downloadForm"); if ($form.length == 0) { $form = $("<form>").attr({ "target": "_blank", "id": "downloadForm", "method": "POST", "action": "script.php" }).hide(); $("body").append($form); } $form.find("input").remove(); var args = { a: "checkToken", b: token } for (var field in args) { $form.append($("<input>").attr({"value":args[field], "name":field})); } $form.submit();}
在script.php中,如果令牌正常,您需要立即从download.php执行代码,或者重定向到下载脚本:
header("Location: download.php?a=" . $filename)
adobe flash player 9.0下载 php强制下载类型的实现代码
复制代码 代码如下:
function downloadFile($file){
/*Coded by Alessio Delmonti*/
$file_name = $file;
$mime = ''application/force-download'';
header(''Pragma: public''); // required
header(''Expires: 0''); // no cache
header(''Cache-Control: must-revalidate, post-check=0, pre-check=0'');
header(''Cache-Control: private'',false);
header(''Content-Type: ''.$mime);
header(''Content-Disposition: attachment; filename="''.basename($file_name).''"'');
header(''Content-Transfer-Encoding: binary'');
header(''Connection: close'');
readfile($file_name); // push it out
exit();
}
php将文件下载下来而不是超链接下载,这样可以减少盗链的情况!将文件给浏览器让浏览器下载
以txt类型为例
由于现在的浏览器已经可以识别txt文档格式,如果只给txt文档做一个文字链接的话,点击后只是打开一个新窗口显示txt文件的内容,并不能实现点击下载的目的。当然这个问题的解决办法也可以是将txt文件改名为浏览器不认识的文件(比如rar),这样的话,由于浏览器不能识别rar类型的文件,只能让用户下载了。还有一种办法,就是利用代码通过header设置文档的格式来实现点击下载的目的。
PHP代码如下:
复制代码 代码如下:
$filename = ''/path/''.$_GET[''file''].''.txt''; //文件路径
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
readfile($filename);
简要说明:
第一个header函数设置Content-Type的值为application/force-download;
第二个header函数设置要下载的文件。注意这里的filename是不包含路径的文件名,filename的值将来就是点击下载后弹出对话框里面的文件名,如果带路径的话,弹出对话框的文件名就是未知的;
最后通过readfile函数,将文件流输出到浏览器,这样就实现了txt文件的下载。
以上就介绍了adobe flash player 9.0下载 php强制下载类型的实现代码,包括了adobe flash player 9.0下载方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
javascript-如何使用PHP强制下载文件?
我希望用户单击“下载此文件”链接时下载文件.
用例:用户单击一个链接,然后Web应用程序生成一个文件并将其“推送”为下载文件.
我有以下PHP代码.尽管已在服务器中正确生成了文件,但未下载文件(并且未显示下载对话框).
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=\"".$filename."\"");
header("Content-transfer-encoding: binary");
readfile('file.zip');
我尝试添加以下内容,但无法正常工作:
header("Location: file.zip"); // not working
虽然,我通过尝试以下重定向找到了一个JavaScript解决方案(正在运行):
window.location.href = 'file.zip';
问题是,执行上面的JavaScript操作会尝试“卸载”当前窗口/窗体,在这种情况下,这对我不起作用.
是否有解决方案,仅使用PHP来“强制”下载文件(在本例中为“ file.zip”)?
解决方法:
$file_url = 'http://www.myremoteserver.com/file.exe';
header('Content-Type: application/octet-stream');
header("Content-transfer-encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url); // do the double-download-dance (dirty but worky)
还要确保基于文件application / zip,application / pdf等添加适当的内容类型-但仅当您不希望触发另存为对话框时.
jQuery通过ajax验证电子邮件,然后再通过ajax提交表单
我有一个配置文件创建表单,其中包含一个电子邮件地址字段。我需要确保用户输入的电子邮件地址格式正确,并且尚未使用。对于格式检查,我通过isValidEmailAddress函数执行了一个简单的客户端验证,效果很好。对于需要检查电子邮件地址是否不存在的另一部分,我向控制器方法执行了一个jquery帖子,如果该电子邮件已被某人使用,则返回一个字符串“电子邮件地址已在使用中”。第一个“
return false”下面的代码不会阻止表单提交。这是一个jquery是异步的东西吗?
$(document).ready(function(){
$("#new_profile").submit(function(){
var email = $("#user_email").val();
if(isValidEmailAddress(email)){
jQuery.post('/profiles/validate_email',{email: email},function(data){
if(data.match(/in use/)){
$(".email-check-message").html(data);
return false;
}
});
}
else{
$(".email-check-message").html('please enter a valid email address');
return false;
}
});
});
另外,上述功能中的jquery帖子似乎不起作用..as在我看来服务器日志中没有发生服务器调用。有人知道发生了什么吗?谢谢。
PHP强制下载.xlsx文件损坏
我的下载代码如下:
case 'xlsx': header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-disposition: attachment; filename="' . $filename . '"'); header('Content-transfer-encoding: binary'); header('Expires: 0'); header('Pragma: no-cache'); readfile('./uploads/resources/courses/' . $filename); break;
解决方法
我用docx,accdb,xlsx,mp3,任何东西进行了测试……
$filename = "equiv1.xlsx"; header('Content-type: application/octet-stream'); header('Content-disposition: attachment; filename="' . $filename . '"'); header('Content-transfer-encoding: binary'); header('Expires: 0'); header('Pragma: no-cache');
关于通过Ajax和PHP强制下载和ajax php的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于adobe flash player 9.0下载 php强制下载类型的实现代码、javascript-如何使用PHP强制下载文件?、jQuery通过ajax验证电子邮件,然后再通过ajax提交表单、PHP强制下载.xlsx文件损坏等相关知识的信息别忘了在本站进行查找喔。
本文标签: