2017-07-26 9 views
1

ここから始まるもの:PHP finding file where post INCLUDES portion of filenamePOSTからサーバーからPHPをダウンロードするファイル

私はこの質問を終えようとしています。

基本的に、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 
    }); 
}); 

:ユーザーが航海番号を入力したとのDataTableが航海のリストを返した、ユーザーは、その後、私は、コードを始めましょうどこでリンクをクリックした後

簡単にまとめ、

<?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"; 
    } 
    } 
?> 

は、私がここで見つけるの答えを使用してみました::プロセスのfileDownload.php 'は、このようになりますDownload files from server php

をしかし、私はワット正確にはわかりませんここでは、ヘッダーを置くか、まったく使用する必要があるかどうかを判断する必要があります。

これを行うより良い方法がある場合は、教えてください。

ありがとうございます。

答えて

0

私があなたに提案できるクイックソリューションは、存在する場合はファイルへのパスを返し、ファイルが存在しない場合はfalseを返します。 その後JSコードで "data" == falseなら "file does not exist"というエラーをスローし、 "false"でなければdocument.location.hrefを呼び出すことができます=データ; - それはファイルにブラウザをリダイレクトします、それはあなたが単にダウンロード属性を使用していないのはなぜ

0

ダウンロードされます:あなたは本当に<a>ためstyle="display:none;"を使用し、ダウンロードを開始するには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"; 
    } 
    } 
?> 

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

をし、それを呼び出す:その後、JSでそれをクリックし

$('.voyageFileCall').on('click', function() 
    { 
     var voyage = $(this).attr('data-voyage'); 
     $.post('fileDownload.php', {voyage:voyage}, function(data) 
     { 
if(document.getElementById("myDownload")){ 
document.getElementById("myDownload").click(); 
}else{ 
console.log("file does not exist"); 
} 
     }); 
    }); 
関連する問題