GVKun编程网logo

通过Ajax和PHP强制下载(ajax php)

142

在这里,我们将给大家分享关于通过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)

通过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强制下载类型的实现代码

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强制下载文件?

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提交表单

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文件损坏

PHP强制下载.xlsx文件损坏

我正在建立一个网站,允许教师上传文件,学生下载文件.但是,有一个问题. Microsoft Word(.docx)文件下载完美,但下载excel(xlsx)文件时,excel会显示“此文件已损坏且无法打开”对话框.任何有关这方面的帮助将不胜感激!

我的下载代码如下:

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;

解决方法

这在我的本地xampp设置上运行正常,无论扩展如何,所以从我的角度来看,除非我遗漏了某些内容,否则不需要大小写声明

我用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文件损坏等相关知识的信息别忘了在本站进行查找喔。

本文标签: