PHP Laravel如何获取原始pdf文件名并使其可下载

问题描述 投票:-1回答:1

我想在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”的内容,但我想要下载的原始名称。

我该如何实现?

php laravel laravel-5.7
1个回答
0
投票

尝试一下

@foreach ($files as $file)
   <a href="{{ asset('storage/'. $file->file_name) }}" download>{{ $file->file_original_name}}</a>
@endforeach
© www.soinside.com 2019 - 2024. All rights reserved.