【发布时间】:2016-09-04 17:40:53
【问题描述】:
我使用 laravel 5.1,我需要将照片存储到文件夹 /images 中。
我有商店功能:
public function store(Requests\VoucherRequest $request)
{
//$photo= null;
$file = array('photo' => $request->file('photo'));
// setting up rules
dd($request->file('photo'));
$rules = array('photo' => 'required|image|max:10000'); //mimes:jpeg,bmp,png and for max size max:10000
// doing the validation, passing post data, rules and the messages
$validator = Validator::make($file, $rules);
if ($validator->fails()) {
// send back to the page with the input data and errors
return redirect()->back()->withErrors(["photo" => "Photo requirments - format: jpg, jpeg, png | max. size: 1 MB"]);
}
else {
// checking file is valid.
if ($request->file('photo')->isValid()) {
$destinationPath = public_path().'/images'; // upload path
$extension = $request->file('photo')->getClientOriginalExtension(); // getting image extension
$photo = str_random(5).'.'.$extension; // renameing image
$request->file('photo')->move($destinationPath, $photo); // uploading file to given path
// sending back with message
}
else {
return redirect()->back()->withErrors(["photo" => "Photo requirments - format: jpg, jpeg, png | max. size: 1 MB"]);
}
}
$voucher = new Voucher($request->all());
//$article['key']= str_random(30);
$voucher['photo'] = $photo;
Auth::user()->vouchers()->save($voucher);
Alert::success('Voucher has beed added!','Good job!')->persistent("Close");
return redirect('vouchers');
}
我在 create.blade.php 里面也有:
{!! Form::open(['url'=>'vouchers','files' => 'true']) !!}
@include('vouchers.form',['submitButtonText'=>'Click to Add New Vocuher'])
{!! Form::close() !!}
我有 form.blade.php:
<div class="form-group row del hidden">
<p class="col-md-3 text-right">{!! Form::label('photo','Upload best image of room') !!}</p>
<div class="col-md-6">
{!! Form::file('photo', null, ['class'=>'btn btn-info']) !!}
</div><br>
</div>
<div class="form-group row">
<div class="col-md-12">
<div class="output"><h6 class="text-center">Click here to add image</h6>
<p class="text-center">( Allowed format is: jpg, jpeg, png | max. size: 1 MB )
<div class="image" class="col-md-3">
<img id="image" style="width:100%;">
</div>
</div>
</div>
</div>
和js代码:
$(function () {
$( ".output" ).on( "click", function() {
$('#photo').trigger('click');
});
$("#photo").on("change", function (e) {
var image = document.getElementById('image');
image.src = URL.createObjectURL(e.target.files[0]);
});
});
但是现在当我点击提交表单时出现错误...我尝试 dd($file) 然后我得到 null 所以照片没有提交...
这里有什么问题?我就是没看到?
【问题讨论】:
-
错误是什么?
-
没有错误,我只是从表单中挑选照片,但是当尝试提交时,照片为 NULL 。为什么?
标签: javascript php forms laravel