ブラウザ上にリストを表示し、各行にダウンロードボタンがあり、
クリックすることで、それぞれのCSVファイルがダウンロードできるような
システムを作りたいと考えています。
ファイル名 | ファイルパス | ダウンロード |
---|---|---|
sample.csv | /var/www/html/test | ダウンロード |
sample2.csv | /var/www/html/test | ダウンロード |
sample3.csv | /var/www/html/test | ダウンロード |
php
1 2① Getだとダウンロードダイアログは表示されるが、ファイル名が渡せていないので、ファイル名決め打ちになってしまっている。 3 4・web.php 5 6Route::get('/test/download', ['as'=>'TestDownloadAjax', 'uses'=>'Test\TestController@download'])->middleware('s1auth'); 7 8 9・TestController.php 10 11public function download() 12{ 13 $targetFileName = 'sample1.csv'; 14 $storagePath = storage_path('test'); 15 $filename = "{$storagePath}/{$targetFileName}"; 16 return response()->download($filename); 17} 18 19 20・event.js 21 22$(document).on('click','.list',function(){ 23 location.href='/test/download'; 24}); 25
php
1 2② Postだと、ダウンロードダイアログが表示されない。ただ、Responseを見ると、中身の値は表示されている。アラートは失敗が表示されます。 3 4・web.php 5 6Route::post('/test/download', ['as'=>'TestDownloadAjax', 'uses'=>'Test\TestController@download'])->middleware('s1auth'); 7 8 9・TestController.php 10 11public function download(TestRequest $request) 12{ 13 $targetFileName = $request->input('file_name'); 14 $storagePath = storage_path('test'); 15 $filename = "{$storagePath}/{$targetFileName}"; 16 return response()->download($filename); 17} 18 19 20・event.js 21 22$(document).on('click','.list',function(){ 23 $.ajax({ 24 type: 'POST', 25 url: $('#_url_TestDownloadAjax').val(), 26 dataType: 'json', 27 async: true, 28 data: { 29 file_name: $(this).data('testuploadhistory-file-name') 30 } 31 }).done(function(data) { 32 alert("成功"); 33 $(".preloader").css("display","none");notify(); 34 }).fail(function(data) { 35 alert("失敗"); 36 $(".preloader").css("display","none");notify(); 37 }); 38}); 39
クリックしたファイル名を取得し、ダウンロードするには、どのような処理が必要になってきますでしょうか?
どなた様かお答えアドバイス頂けますと大変助かります。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/21 02:05