从POST下载服务器的PHP文件

时间:2017-07-26 20:07:18

标签: php jquery file download directory

从这里开始:PHP finding file where post INCLUDES portion of filename

我想完成这个问题。

基本上,既然我能够将变量发布到PHP进程,然后使用该进程在目录中查找文件,我现在需要能够下载文件(如果存在)。

快速回顾一下,在用户输入航次号码并且数据表返回了航程列表后,用户然后点击链接,这是我将开始代码的地方:

$('.voyageFileCall').on('click', function()
{
  var voyage = $(this).attr('data-voyage');
  $.post('fileDownload.php', {voyage:voyage}, function(data)
  {
    // here is where I need to where either display the file doesn't exist
    // or the file downloads
  });
});

进程'fileDownload.php'如下所示:

<?php
  if($_POST['voyage'] == true)
  {
    $voyage = $_POST['voyage'];
    $files = scandir("backup/");
    if(count($files) > 0)
    {
      $fileFound = false;
      foreach($files as $file)
      {
        if((preg_match("/\b$voyage\b/", $file) === 1))
        {
          // I'm guessing the download process should happen here
          echo "File found: $file \n"; // <-- this is what I currently have
          $fileFound = true;
        }
      }
      if(!$fileFound) die("File $voyage doesn't exist");
    }
    else
    {
      echo "No files in backup folder";
    }
  }
?>

我尝试使用此处的答案:Download files from server php

但是我不确定我应该把标题放在哪里,或者我是否需要使用它们。

2 个答案:

答案 0 :(得分:0)

我建议你的快速解决方案是:如果文件存在则返回文件路径,如果文件不存在则返回false。 在您的JS代码中,您可以检查,如果您的&#34;数据&#34; == false,你可以抛出错误&#34;文件不存在&#34;,如果它不是&#34; false&#34;,你可以调用document.location.href = data; - 它会将您的浏览器重定向到该文件,并将其下载

答案 1 :(得分:0)

为什么不简单地使用下载属性:

def

如果您真的想使用JavasScript开始下载,请使用<?php if($_POST['voyage'] == true) { $voyage = $_POST['voyage']; $files = scandir("backup/"); if(count($files) > 0) { $fileFound = false; foreach($files as $file) { if((preg_match("/\b$voyage\b/", $file) === 1)) { // I'm guessing the download process should happen here echo 'File found: <a href="' . $file . '" download>' . $file . '</a> \n'; // <-- this is what I currently have $fileFound = true; } } if(!$fileFound) die("File $voyage doesn't exist"); } else { echo "No files in backup folder"; } } ?> 作为style="display:none;",然后在JS中点击它:

<a>

并称之为:

echo 'File found: <a id="myDownload" style="display:none;" href="' . $file . '" download>' . $file . '</a> \n';