【问题标题】:Get clientOriginalName in Laravel View在 Laravel 视图中获取 clientOriginalName
【发布时间】:2020-04-07 01:50:39
【问题描述】:

我有一个 Laravel 视图,用户可以在其中上传多个文件。我的控制器获取这些文件并将它们放在 public/storage 的文件夹中。文件名是客户端的原始文件名,我试图让视图动态显示原始文件名(而不是临时路径),然后链接到该文件。我有以下代码:

<a class='col-6' href="/download/{{ $plansubmission->id }}/{{$plansubmission->current_plan_year_claims_data_file_1 }}">{{ $plansubmission->current_plan_year_claims_data_file_1 }}</a> 

路线:

Route::get('/download/{folder}/{id}', 'DownloadsController@getDownload');

下载控制器:

class DownloadsController extends Controller
{      
    public function getDownload($folder, $id){
        //PDF file is stored under project/public/download/info.pdf
        $pathToFile=public_path(). "\storage\\$folder\\$id";
        // return Response::download($file);
        return response()->file($pathToFile);
    }
}

我可以在 URL 中输入正确的路径,然后下载就可以了。但是视图中的链接没有链接到本地​​文件存储。

【问题讨论】:

  • 在存储文件和保存记录时,需要在存储后获取新的文件名,而不是临时位置名
  • 谢谢。我只是不太确定该怎么做。这是我保存文件的方式: Storage::disk('local')->putFileAs( $folder, $file, $file->getClientOriginalName() );
  • 你在数据库中保存了什么?听起来您正在保存$file,这将为您提供临时文件路径...编辑您的问题并提供该控制器方法

标签: laravel


【解决方案1】:

如果您为路线添加名称,如下所示:

Route::get('/download/{folder}/{id}', 'DownloadsController@getDownload')->name('pdfDownload');

然后在视图中你可以像这样调用route()

route('pdfDownload', [$plansubmission->id, $plansubmission->current_plan_year_claims_data_file_1]);

这将自动将值绑定到路由和您的 url。

更多信息here。我希望这会有所帮助

【讨论】:

  • 谢谢,我可能应该这样做。但是,我遇到的问题是我的文件被保存为原始客户端名称(即 TestFile.pdf),当我返回 $plansubmission->current_plan_year_claims_data_file_1 时,它只会给我一个像 C:\xampp\tmp\phpE05A 这样的文件路径。温度。结果,我无法创建指向该文件的链接,因为我无法为 URL 获取正确的文件名。
猜你喜欢
  • 2014-12-24
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 2016-09-15
  • 2016-07-04
  • 1970-01-01
相关资源
最近更新 更多