2016-10-25 9 views
0

私のウェブサイトには、PHP関数を使用して自分のサーバー(ウェブサイトファイルと同じディレクトリ)にファイルを作成するJavaScript関数があります。このファイルの名前は、これらのJavaScript関数およびPHP関数でのみ認識されています。 このファイルをダウンロードするには、通常の[名前を付けて保存]ボックスを開きます。 Firefox、Chrome、Explorer/Edgeで動作する方法でJavascript/PHPを使ってこれを行う方法はありますか? (JavaScriptのみ/ PHPは、ファイル名を知っている)Javascript/PHPでボックスに保存

これはPHPの例である:それは自動的に保存され、ユーザーはその設定を変更していない場合はIEで窓がとても開きクロム& Firefoxで

file_put_contents($filename,$txt); 

header('content-type: application/text'); 
header('content-disposition: attachment; filename=' . $filename); 

readfile($filename); 

答えて

2

デフォルトでは、使用しているブラウザに関係なくダイアログを保存する場所が表示されます。詳細については

https://support.google.com/chrome/answer/95574?hl=en-GB

に行きます。あなたのサーバーからファイルをダウンロードするためのPHPコードを使用することができます。

header('content-type: application/[type]'); 
header('content-disposition: attachment; filename=yourfile.file-extension'); 
readfile('yourfile.file-extension'); 

大きなファイルのために、あなたはこのコードを使用して

function readfileChunked($filename, $retbytes=true){ 
$chunksize = 1*(1024*1024); 
$buffer = ''; 
$cnt = 0; 
$handle = fopen($filename, 'rb'); 

if ($handle === false) { 
    return false; 
} 

while (!feof($handle)) { 
    $buffer = fread($handle, $chunksize); 
    echo $buffer; 
    ob_flush(); 
    flush(); 
    if ($retbytes) { 
     $cnt += strlen($buffer); 
    } 
} 

$status = fclose($handle); 

if ($retbytes && $status) { 
    return $cnt; // return num. bytes delivered like readfile() does. 
} 

return $status; 
} 
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: application/force-download'); 
header('Content-Disposition: attachment; filename="'.$name.'"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '. get_remote_size($url)); 
header('Connection: close'); 
readfileChunked($url); 
+0

を使用することができ、ファイル形式(.txt)コンテンツが –

+0

ファイル...としてダウンロードされるのではなく、Webページ自体に表示されます@ JohnEllis私が変更した答えを見てください。 – Kumar

関連する問題