【问题标题】:Save and retrieve file in Laravel在 Laravel 中保存和检索文件
【发布时间】:2018-11-21 06:40:19
【问题描述】:

我很难理解 Laravel 中的文件保存和检索。我设法将文件保存到正确的路径中

$fileNameWithExt = $request->file('Agreement_file')->getClientOriginalName();
$fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
$extention  =$request->file('Agreement_file')->getClientOriginalExtension();
$filenameToStore = $fileName . '_' . $lab_id. '.'.$extention;
$request->Agreement_file->storeAs('agreements', $filenameToStore );

但是,我不想创建一个 a-tag 来下载文件,但无法设法下载文件。

<a href="/storage/app/public/agreements/'. {{$filenameToStore}}" download="{{$filenameToStore}}">{{$filenameToStore}}</a>

文件下载但我收到错误“失败 - 服务器问题”。我不想使用相同的链接,因为这些文件是机密文件,不能在应用程序之外下载。

【问题讨论】:

  • 嗨!什么是检查元素的输出?

标签: php laravel-5 laravel-filesystem


【解决方案1】:

类似的东西?

第 1 步:

创建表格文件id | filename | user_id

第 2 步:

创建模型文件

第 3 步:

在表格中添加文件行。

$fileNameWithExt = $request->file('Agreement_file')->getClientOriginalName();
$fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
$extention  =$request->file('Agreement_file')->getClientOriginalExtension();
$filenameToStore = $fileName . '_' . $lab_id. '.'.$extention;
$request->Agreement_file->storeAs('agreements', $filenameToStore );

File::create([
   'filename' => $filenameToStore,
   'user_id' => Auth::id()
]);

第 4 步:

创建控制器方法下载。

public function download(){
    $filename = $request->input('filename');

    $file = File::where('user_id', Auth::id())
        ->where('filename', $filename)
        ->firstOrFail();

    $path = Storage::path('agreements/' . $filename);

    if(Storage::exists($path)){
        return Response::download($path, $filename);
    }
}

第 5 步:

替换你的链接:

<a href="/path/download?filename='. {{$filenameToStore}}" download="{{$filenameToStore}}">{{$filenameToStore}}</a>

或者您可以根据文件 ID 构建它。

【讨论】:

  • 感谢您的解释。好的,我在当前文件中确实有一个文件来保存文件名,因此我不需要创建一个包含文件名的新表。下载功能,应该在我保存的Controller文件中还是应该放在刀片文件中?
  • @Johann 下载方法必须在控制器中。
  • @IndianCoding 你能把你的电子邮件发给我吗,我可以把我的刀片和我的控制器文件发给你。我还是迷路了
  • 这很有帮助,但是如果我的函数参数有array $data 并通过 modal::create(['firstname' => $data['firstname'])`` 保存数据,那么如何我保存文件谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多