我想在laravel
应用程序中创建一个页面,应该可以在其中下载一堆PDF
文件。我已经创建了一个模型和一个控制器,并且在Nova后端中,我已经上传了一些pdf文件。
我的新星领域:
public function fields(Request $request) {
return [
Text::make('File name', 'file_name')
->rules('required'),
File::make('Download', 'file')
->disk('public')
->path('materials')
->storeOriginalName('file_original_name')
->storeSize('file_size')
->prunable(),
];
}
然后是我的模特:
class Material extends Model {
protected $fillable = [
'file_name', 'file', 'file_original_name', 'file_size'
];
}
和我的控制器:
use App\Material;
use Illuminate\Http\Request;
class MaterialController extends Controller {
public function files()
{
$files = Material::get();
return view('app.materials', compact('files'));
}
}
在我的web.php中,我这样做:
Route::get('materials', 'MaterialController@files')->name('materials');
在我的刀片视图中:
@foreach ($files as $file)
<a href="{{ asset('storage/'. $file->file) }}" download>{{ $file->file_name }}</a>
@endforeach
到目前为止,此方法有效,BUT例如,当原始文件名是“ myfile.pdf”时,$file->file
返回类似“ dadjafmdahdyda2e23as.pdf”的内容,但我想要下载的原始名称。
我该如何实现?
尝试一下
@foreach ($files as $file)
<a href="{{ asset('storage/'. $file->file_name) }}" download>{{ $file->file_original_name}}</a>
@endforeach