在 Ajax 和 php 中自动下载文件

拉梅什

我有一个提示输入密钥的表单。当用户插入key并点击提交时,会在db中搜索key。如果找到密钥,则必须自动下载与密钥相关的文件。我已经使用 AJAX 和 php 完成了数据库的验证。现在我想自动下载文件。我怎样才能做到这一点?(如果我可以在 php 文件中自动下载就更好了)

查询

$('#review-submit').on('click',function(){
        var $secret_pin= $('#pin').val();
        jQuery.ajax({
              type : 'post',
              url : ajax_review_plan_object.ajaxurl,
              data : {
                  action : 'loadReviewPlansByAjax',
                  'search': $secret_pin
              },
              contentType: "application/x-www-form-urlencoded; charset=UTF-8",

              success: function(response){
                console.log(response);
                response= response.match(/\d{2}$/);
                if(response==1){
                  $('#empty_pin').fadeIn();
                  $('#invalid_pin').fadeOut();
                  $('#correct_pin').fadeOut();
                  $('#empty_table').fadeOut();
                }else if(response==-1){
                  $('#empty_table').fadeIn();
                  $('#invalid_pin').fadeOut();
                  $('#correct_pin').fadeOut();
                  $('#empty_pin').fadeOut();
                }else if(response==2){
                  $('#correct_pin').fadeIn();
                  $('#invalid_pin').fadeOut();
                  $('#empty_table').fadeOut();
                  $('#empty_pin').fadeOut();
                }else if(response==3){
                  $('#invalid_pin').fadeIn();
                  $('#correct_pin').fadeOut();
                  $('#empty_table').fadeOut();
                  $('#empty_pin').fadeOut();
                }
              }
            });
      });

php

function loadReviewPlansByAjax(){
  $search= $_POST['search'];

  $args = array( 'post_type' => 'reviewplans' );
    $loop = new WP_Query( $args );
    if($loop->have_posts()){
      while ( $loop->have_posts() ) : $loop->the_post();
        // the_title();
        $key = get_field('pin');

        if($search== ''){
          echo 1;
          return;
        } else if($key == $search){
          echo 2;
          return;
        } else{
          echo 3;
        }
      endwhile;
    }else{
      echo -1;
    }
}

   add_action( 'wp_ajax_loadReviewPlansByAjax', 'loadReviewPlansByAjax' );
   add_action( 'wp_ajax_nopriv_loadReviewPlansByAjax', 'loadReviewPlansByAjax' );

  function ajax_coming_soon_enqueues() {
  wp_enqueue_script( 'review-plans-ajax-script', get_stylesheet_directory_uri() . '/framework/assets/js/review-plan-ajax.js', array( 'jquery' ), '1.0.0', true );
  wp_localize_script( 'review-plans-ajax-script', 'ajax_review_plan_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
  }
  add_action( 'wp_enqueue_scripts', 'ajax_coming_soon_enqueues' );
赫里先生

您必须创建一个 PHP 文件来验证密钥并开始下载流。这是我使用 key onGET方法的示例

if(isset($_GET["key"])){
    $key = $_GET["key"];
    //get key from database

    //Validate the key
    if($key == "key-from-database"){
        if(file_exists("/path/to/file/" . $filename)){
            $o = fopen("/path/to/file/" . $filename, "rb");

            header("Content-Type: "); //Put mime type if you have it. You may left it empty
            header('Content-Disposition: attachment; filename="'. $filename .'"'); //File name is important
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0, max-age=0');
            header("Content-Transfer-Encoding: binary");
            header('Pragma: public');

            echo stream_get_contents($o);
            fclose($o);
        }
    }
}

你也使用其他的fopen()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用ajax和php下载文件

来自分类Dev

使用Ajax和php下载文件-readfile不起作用

来自分类Dev

使用Ajax和iframe下载文件

来自分类Dev

使用标头和读取文件自动执行HTTP POST / GET PHP下载文件

来自分类Dev

用php和polymer下载文件

来自分类Dev

使用Guzzle和Ajax从Dropbox下载文件

来自分类Dev

使用<iframe>和AJAX下载文件时出现404

来自分类Dev

使用PHP DOMPDF和AJAX下载PDF文件

来自分类Dev

检查(下载)文件是否与AJAX和PHP存在

来自分类Dev

使用PHP和Ajax下载HTML页面

来自分类Dev

如何使用ajax和php复制文件

来自分类Dev

从文件分页使用php和ajax

来自分类Dev

从文件分页使用php和ajax

来自分类Dev

使用Ajax和php上传文件

来自分类Dev

使用PHP和AJAX更新JSON文件

来自分类Dev

使用ajax和php发送文件

来自分类Dev

PHP中的jQuery Ajax和POST方法

来自分类Dev

使用php和ajax无法在与表单相同的页面上载文件

来自分类Dev

使用urllib2和/或wget自动下载文件

来自分类Dev

使用 PHP 和 AJAX 删除 JSON 文件中的数组

来自分类Dev

LiveSearch PHP和Ajax

来自分类Dev

PHP和Ajax发布

来自分类Dev

Ajax和PHP会话

来自分类Dev

使用JAX-RS以及ajax和javascript的blob对象下载文件不起作用

来自分类Dev

使用struts2和Ajax下载文件时如何放置进度栏

来自分类Dev

通过Ajax下载文件

来自分类Dev

Ajax和PHP:是否可以在单个提交中执行Javascript,Ajax函数和PHP帖子?

来自分类Dev

为什么使用 AJAX 下载文件会冻结整个 PHP Web 服务器?

来自分类Dev

PHP和AJAX几个MB文件的下载将冻结网站