在将文件上传到laravel时,我遇到了问题,它的pdf或图像总是返回到null
这是视图
{!! Form::open(['action' => 'TransactionInController@store', 'method' => 'POST', 'autocomplete' => 'off',
'class' => 'form-horizontal', 'enctype' => 'multipart/form-data']) !!}
<div class="row">
{{ Form::label('Device Document', '', ['class' => 'col-sm-2 col-form-label']) }}
<div class="col-sm-7">
{{ Form::file('device_document') }}
<p style="color: red;">@error('device_document') {{ $message }} @enderror</p>
</div>
</div>
{!! Form::close() !!}这是我使用的控制器
public function store(Request $request)
{
$this->validate($request, [
'device_document' => 'nullable|max:8192|mimes:pdf'
]);
$transactionsin = new TransactionIn;
$imageName = $request->input('device_document');
$request->image->move(public_path('document-image'), $imageName);
$transactionsin->save();
return redirect('/transactionsin');
}我知道以前有人问过它,我已经尝试过几种上传文件的方法,这个错误。
这是运行代码时收到的错误消息。
对成员函数的调用--在null上移动()
但是如果我把控制器中的代码转换成更简单的东西,像这样
public function store(Request $request)
{
$this->validate($request, [
'device_document' => 'nullable|max:8192|mimes:pdf'
]);
$transactionsin = new TransactionIn;
$transactionsin->device_document = $request->input('device_document');
$transactionsin->save();
return redirect('/transactionsin');
}它不会返回任何错误消息,但它将保存为数据库中的null。
发布于 2020-07-01 10:52:31
使用$request->file('device_document')而不是input方法来捕获文件。
如果您想获取上传文件的原始名称,可以使用
getClientOriginalName()方法这样做。
试试这个:
public function store(Request $request)
{
$this->validate($request, [
'device_document' => 'nullable|max:8192|mimes:pdf'
]);
$transactionsin = new TransactionIn;
$imageName = $request->file('device_document');
$imageName->move(public_path('document-image'), $imageName->getClientOriginalName());
$transactionsin->device_document = $request->file('device_document')->getClientOriginalName();
$transactionsin->save();
return redirect('/transactionsin');
}见正式文档这里
发布于 2020-07-01 10:51:14
您可以使用file()方法而不是输入法访问文件,并在上传图像之后使用资产()函数获取图像路径,如下所示
$transactionsin = new TransactionIn;
$image= $request->file('device_condition');
//upload imaage
$image->move(public_path('document-image'), $image->getClientOriginalExtension());
//asset() function use store path
$transactionsin->device_document = asset('document-image/'.$image->getClientOriginalExtension());
$transactionsin->save();https://stackoverflow.com/questions/62675083
复制相似问题