Laravel 如何在仪表板视图中为 Auth() 用户下载文件
Laravel how download file for Auth() user in dashboard view
我在启用 Auth 用户下载 laravale 存储中存储的文件时遇到了很大的问题。用户在 table users
字段中有 id_message
,这是用户要下载文件的文件夹的唯一名称。
在 AuthController
中需要做什么才能控制 dashboard.blade
访问用户下载文件?问题是如何从 table 变量 id_message
添加到 file path
文件已存储/app/files/{id_message}/*.zip
return response()->download(store_path('app/files/'.(Auth()->user()->id_message).'/*.zip'));
最后,blade 里会有什么
<td><a href="{{ }}">Download</a></td>
不明白为什么这个问题对我来说这么难解决。
创建下载 link,(参见 docs)
$filepath = app_path() . '/files/' . Auth::user()->id_message . '/*.zip'
if(\Illuminate\Support\Facades\File::exists($filepath)){
return response()->download($filepath, 'your_filename', [
'Content-Length: '. filesize($filepath)
]);
}else{
return false; //you can show error if it returns false
}
在blade中调用url(get方法),
<td><a href="{{ url('download/' . auth->user()->id_message) }}"
target="_blank">Download</a></td>
您可以简单地使用带有文件 url 的 <a>
标签作为标签的 href
。
<a href="{{ storage_path('app/files/'.auth()->user()->id_message.'/file.zip') }}" title="Download" target="_blank">
<button class="btn btn-success">Download</button>
</a>
或者您可以使用控制器方法来完成。
路线
Route::get('download-my-file', 'MyController@downloadZipFile')->name('downloadZipFile');
控制器
public function downloadZipFile()
{
$fileName = storage_path('app/files/'.auth()->user()->id_message.'/file.zip');
return response()->download($fileName);
//you can add file name as the second parameter
return response()->download($fileName, 'MyZip.zip');
//you can pass an array of HTTP headers as the third argument
return response()->download($fileName, 'MyZip.zip', ['Content-Type: application/octet-stream', 'Content-Length: '. filesize($fileurl))]);
//you can check for file existence.
if (file_exists($fileName)) {
return response()->download($fileName, 'MyZip.zip');
} else {
return 0;
}
}
在视野中
<a href="{{ route('downloadZipFile') }}" target="_blank">
<button class="btn btn-success">Download</button>
</a>
我在启用 Auth 用户下载 laravale 存储中存储的文件时遇到了很大的问题。用户在 table users
字段中有 id_message
,这是用户要下载文件的文件夹的唯一名称。
在 AuthController
中需要做什么才能控制 dashboard.blade
访问用户下载文件?问题是如何从 table 变量 id_message
添加到 file path
文件已存储/app/files/{id_message}/*.zip
return response()->download(store_path('app/files/'.(Auth()->user()->id_message).'/*.zip'));
最后,blade 里会有什么
<td><a href="{{ }}">Download</a></td>
不明白为什么这个问题对我来说这么难解决。
创建下载 link,(参见 docs)
$filepath = app_path() . '/files/' . Auth::user()->id_message . '/*.zip'
if(\Illuminate\Support\Facades\File::exists($filepath)){
return response()->download($filepath, 'your_filename', [
'Content-Length: '. filesize($filepath)
]);
}else{
return false; //you can show error if it returns false
}
在blade中调用url(get方法),
<td><a href="{{ url('download/' . auth->user()->id_message) }}"
target="_blank">Download</a></td>
您可以简单地使用带有文件 url 的 <a>
标签作为标签的 href
。
<a href="{{ storage_path('app/files/'.auth()->user()->id_message.'/file.zip') }}" title="Download" target="_blank">
<button class="btn btn-success">Download</button>
</a>
或者您可以使用控制器方法来完成。
路线
Route::get('download-my-file', 'MyController@downloadZipFile')->name('downloadZipFile');
控制器
public function downloadZipFile()
{
$fileName = storage_path('app/files/'.auth()->user()->id_message.'/file.zip');
return response()->download($fileName);
//you can add file name as the second parameter
return response()->download($fileName, 'MyZip.zip');
//you can pass an array of HTTP headers as the third argument
return response()->download($fileName, 'MyZip.zip', ['Content-Type: application/octet-stream', 'Content-Length: '. filesize($fileurl))]);
//you can check for file existence.
if (file_exists($fileName)) {
return response()->download($fileName, 'MyZip.zip');
} else {
return 0;
}
}
在视野中
<a href="{{ route('downloadZipFile') }}" target="_blank">
<button class="btn btn-success">Download</button>
</a>