当我保存时,我会收到此错误
未定义的变量:文件
我真的不知道如何存储文件,但我在谷歌检查了一些博客,这是我的商店功能:
public function store(Request $request)
{
$this->validate($request, $this->rules);
if($request->hasFile('file')){
$file = $request->file('file');
$path = $file->getRealPath();
$files = file_get_contents($path);
}
$input = $request->all();
$charge = $request->get('charge');
$date = $request->get('date');
$job = $request->get('job_id');
$id = \Auth::id();
$current_id = DB::table('charges')->max('invoice_no');
$data = array();
foreach ($charge as $key=>$value ){
$data[] = [
'date' => $date,
'charge'=>$value,
'job_id'=>$job,
'user_id'=>$id,
'amount'=>$input['amount'][$key],
'category'=>$input['category'][$key],
'file'=>$files[$key], // here i will get error
'invoice_no' => $current_id + 1,
];
}
我正在创建我们的公司应用程序,因此我们将托管云。我很困惑将这些文件存储在我的数据库或磁盘中,但我们必须访问这些文件。在我的节目视图中,我希望使用名称显示此文件,当我点击该名称时,我希望显示该特定文档的可能性如何?
EDIT 这是我的表格
{!! Form::model(new App\Charge, ['route' => ['charges.store'],'class'=>'form-horizontal','role'=>'form']) !!}
<div class="form-group">
{!! Form::label('date', 'DATE :',['class'=>'col-md-2 control-label']) !!}
<div class="col-md-7">
{!! Form::date('date',\Carbon\Carbon::now(),null,['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('job_id', 'JOB ID :',['class'=>'col-md-2 control-label']) !!}
<div class="col-md-7">
{!! Form::select('job_id',$job,null,['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('charges', 'CHARGES :',['class'=>'col-md-2 control-label']) !!}
<div class="col-md-10">
<div class="input_fields_wrap">
<button class="add_field_button" value="">Add More Charges</button>
<div>
<input type="text" name="charge[]">
<input type="text" name="category[]">
<input type="text" name="amount[]">
<input type="file" name="file[]">
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2 col-md-offset-8">
<submitfiled>
{!! Form::submit(['class'=> 'btn btn-primary form-control']) !!}
</submitfiled>
</div>
</div>
{!! Form::close() !!}
答案 0 :(得分:1)
您正在尝试访问仅在上传文件时设置的$files
变量:
if($request->hasFile('file')){
$file = $request->file('file');
$path = $file->getRealPath();
$files = file_get_contents($path);
}
因此,您可能无法上传文件。检查您的表单是否有enctype="multipart/form-data"
。还要确保您通过在第2行上使用以下方式检查文件来上传文件:
dd($request->file('file'));
我们假设文件上传工作正常,您将整个文件读成string
file_get_contents()
并将其分配给$files
但是在代码的后面,您认为$files
是array
:
'file'=>$files[$key], // here i will get error
尝试调试您的变量以查看其中的实际内容。
此外,我会将文件复制到上传目录,只保存此文件的路径,而不是将整个文件保存为字符串。
答案 1 :(得分:0)
我发现你上传时遇到问题,但你已经到了那里,对吗?
存储后,您将拥有一个带有参数的路径,该路径可以流式传输或下载相关文件。
同时检查
https://github.com/barryvdh/laravel-dompdf
你会找到很棒的方式