2017-11-27 19 views
0

サーバからファイルをダウンロードしようとしていて、pdfファイルで正常に動作します。など同じコードを使用して異なる種類のファイルをダウンロードするPHP

マイコード:

<?php 
$doc = $sqlite->readDoc($documentId); 
    if ($doc != null) { 
     header("Content-Type:" . $doc['mime_type']); 
     header('Content-disposition: attachment; filename="something"'); 
     print $doc['doc']; 

    } else { 
     echo 'Error occured while downloading the file'; 
    } 
?> 
+0

@ZaidBinKhalidへのご意見は、あなたの質問に処方されるものとは別の問題を示唆しているようです。 PDFファイル以外のファイル(ダウンロードダイアログが表示されない/ダウンロードされていないなど)に対応していないか、またはファイルの拡張子が適切かどうかを判断できませんか?ダウンロード? –

答えて

1

任意のファイルformateフォームパスをダウンロードするために使用できるシンプルな関数です。

function DownloadFile($strFilePath) 
{ 
     $strContents = file_get_contents(realpath($strFilePath)); 
     if (strpos($strFilePath,"\\") > -1) 
      $strFileName = substr($strFilePath,strrpos($strFilePath,"\\")+1); 
     else 
      $strFileName = substr($strFilePath,strrpos($strFilePath,"/")+1); 
     header('Content-Type: application/octet-stream'); 
     header("Content-Disposition: attachment; filename=\"${strFileName}\""); 
     echo $strContents; 
} 

使用例

$file = $_GET['file_id']; 
$path = "../uploads/".$file; // change the path to fit your websites document structure 
DownloadFile($path); 
+0

問題はファイルの拡張子にあります。ファイルの種類に応じて拡張子を追加したい、docなど.. – SMH

+0

この機能を試しましたか?拡張について心配する必要はなく、絶対パスのようにファイル名を渡すだけです。 'upload/somthing.pdf'や' upload/somthing.doc'や 'upload/somthing.jpg'など –

+0

DBからファイルを読み込むときにパスがありません。私の質問を編集しました – SMH

関連する問題