2017-07-18 20 views
0

照会結果をカンマ区切りの値としてデータベースから返します。1,2,3..etc 次に、ダウンロード用のボタンを作成しようとしています。 1 idまたは複数である)。複数のドキュメントを持つLaravelのダウンロードボタン

だから、一つのファイルの付いたボタンは、クエリの戻り複数のIDのは、このようになります。この

<a href="users/files/download/2?_token=SivFIl3kKuflAvIyYJFGKdovJHTlqpjObN2nMFbQ">Download Now</a> 

とボタンのように見えます(トークンの前に2,3に気づく)

<a href="users/files/download/2,3?_token=SivFIl3kKuflAvIyYJFGKdovJHTlqpjObN2nMFbQ">Download Now</a> 

この私がに追加routes.php

Route::get('/users/files/download/{fileId}', '[email protected]'); 

これをコントローラ

現在
public function getDownload($fileId) 
{ 
    $file = Documents::findOrFail($fileId); 
    $file = public_path(). "/uploads/" . $file->document_path; 
    return Response::download($file, 'filename.pdf'); 
} 

私は

を照らし\データベース\雄弁\ ModelNotFoundException持っているボタンをクリックしますどんなに:モデルなしクエリ結果[ドキュメント]。

これは何を意味しますか?モデルはそこにあります。これはドキュメントモデルです

class Documents extends Eloquent 
{ 
    protected $table = 'documents'; 
    protected $primaryKey = 'id'; 
    public $timestamps = false; 
} 

複数の場合、どのようにすべてのドキュメントIDを選択できますか?

更新:現在のコード

$file = Documents::findOrFail([$fileId]); 

$zip = new ZipArchive(); 
$zip_name = time().".zip"; // Zip name 
$zip->open($zip_name, ZipArchive::CREATE); 
    foreach ($file as $files) { 
    $path = public_path(). "/uploads/" . $files['document_path']; 

     if(file_exists($path)){ 
      $zip->addFromString(basename($path), file_get_contents($path)); 
     } 
     else{ echo"file does not exist"; }     
    } 
$zip->close(); 
+0

のために、アレイ内$fileIdに合格する必要がありますが、これらのファイルのzipファイルを作成してダウンロードすることができます。 –

答えて

2

あなたはlaravelで一度に複数のファイルをダウンロードすることはできません複数のID

$file = Documents::findOrFail([$fileId]); 
$number_of_files = count($file); 
if ($number_of_files > 1) { 
    // Push all the files in a zip and send the zip as download 
} else { 
    // Send the file as a download 
    $file = public_path(). "/uploads/" . $file->document_path; 
    return Response::download($file, 'filename.pdf'); 
} 
+0

Hm、 'ErrorException:Undefined index:document_path'が表示されます。もし私が 'dd($ file)'と書かれていれば、document_pathが存在することがわかります – user5996816

+0

おそらくあなたは複数の結果を得ています。その場合、 '$ file'をループする必要があります。 – linktoahref

+0

はい、IDが1+であるため、1 +結果が得られます。ループどこ?コントローラーの中で、ダウンロードのためにそれを渡す方法は? – user5996816

関連する問題