2016-05-17 6 views
0

ゴール:クライアントがサーバーからファイルを参照するように要求するとき、クライアントのブラウザが何をするかを尋ねる(ファイルを開くまたはダウンロードする)。どうすればそれを構築できますか?laravelですべてのタイプのファイルに対して同じブラウザレスポンスを作成する方法

は、これまでのところ私はそれらのような方法があります:

public static function getFileContent($fullpath){ 
    //yes, i can get both file and its extension 
    $file = File::get($fullpath); 
    $mimeType = File::extension($fullpath); 
    $response = Response::make($file, 200, array('content-type'=>$mimeType)); 
    return $response; 
} 

をし、他の方法は、上記

$path = $instance->the_file_path_on_the_database; 
return MyClass::getFileContent($path); 

この場合には、アップロードされたファイルがある場合は、PDF、PNG、JPEGなどを呼び出しますブラウザは自動的にファイルを開きますが、これは問題ありません。

しかし、* .xlsxまたは* .docxについては、ブラウザで何をすべきか尋ねられますが、ファイル名はデータベースに保存されているものと同じではなく、拡張子もありません。また、ファイルはルート名として自動的に名前が変更されます。

ありがとうございます。

答えて

1

docs

に係るダウンロード方法は、指定されたパスにファイルをダウンロードする ユーザのブラウザを強制応答を生成するために使用することができます。ダウンロード メソッドは、 ファイルをダウンロードしたユーザーに表示されるファイル名を が決定するメソッドの2番目の引数としてファイル名を受け入れます。最後に、あなたは三 メソッドの引数としてHTTPヘッダの配列を渡すことがあります。

return response()->download($pathToFile);

return response()->download($pathToFile, $name, $headers);

+0

おかげで、私はどこのブラウザでサポートされているファイルのようなものを実装するために求めていただろう自動的に開かれ、他の人は何をすべきか尋ねられます。私は自分のケースを作成しなければならないと思うが、とにかく答えてくれてありがとう。 –

関連する問題