我正在使用Laravel的文件存储系统,我试图触发下载响应通过浏览器下载我的文件,但它找不到正确的文件,而是下载我的文件页面视图脚本。我也设置了一个存储链接。
如有任何建议,我们将不胜感激。
File.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<form action="{{route('upload')}}" method="POST"
enctype="multipart/form-data" name="formName">
{{csrf_field() }}
<input type="file" name="file">
<input type="submit" class="btn" name="submit">
</form>
<div class="row">
@foreach($files as $file)
<a href="{{route('download',$file)}}" download="{{$file->name}}">
{{$file->name}}</a>
</div>
</div>
@endsection
下载功能
public function download($file){
return response()->download(storage_path('/storage/app/files/'.$file));
}
文件路由
Route::get('files', 'FileController@index')->name('upload');
Route::post('files', 'FileController@store');
Route::get('files/{file}', 'FileController@download')->name('download');
3条答案
按热度按时间tpgth1q71#
从链接中删除此
download="{{$file->name}}"
。可以添加
download
作为html属性:但在这种情况下不需要,只需使用:
控制器中的
response()->download()
方法将生成一个响应,强制浏览器下载给定路径下的文件,因此请确保路径正确。如果文件的格式为
your-project-root-path/storage/app/files/
,则可以用途:如果文件位于
your-project-root-path/storage/storage/app/files/
中,请用途:eeq64g8w2#
我认为你传递的是文件对象而不是文件名到你的下载路径。
尝试将{{route('download',$file)}}替换为{{route('download',$file-〉name)}}。还尝试将下载控制器替换为以下代码
u0njafvf3#
公共函数jpg_download($id){ if(auth()-〉user()-〉下载计数〈5){