我在一个项目中工作,我想为类别上传图像。 上传部分工作顺利。 我想要的是在上传之前,当用户选择图像时,应显示所选图像的预览以及图像名称。 在这种情况下我很迷茫。
下面是我的观点:
{!! Form::open(['url' => '/addCategory', 'method' => 'post', 'enctype'=> 'multipart/form-data']) !!}
{{ csrf_field() }}
@method('post')
<div class="card ">
<div class="card-header card-header-primary">
<h4 class="card-title">{{ __('Add Category') }}</h4>
<p class="card-category"></p>
</div>
<div class="card-body ">
<div class="row">
<label class="col-sm-2 col-form-label">{{ __('Name') }}</label>
<div class="col-sm-7">
<div class="form-group{{ $errors->has('name') ? ' has-danger' : '' }}">
<input class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="category" id="category" type="text" placeholder="{{ __('Name') }}" value="" required="true" aria-required="true" />
</div>
</div>
</div>
<div class="row">
<label class="col-sm-2 col-form-label">{{ __('Description') }}</label>
<div class="col-sm-7">
<div class="form-group{{ $errors->has('name') ? ' has-danger' : '' }}">
<textarea class="md-textarea form-control" rows="5" name="desc" id="desc" type="text" placeholder="{{ __('Description') }}" value="" required="true" aria-required="true"></textarea>
</div>
</div>
</div>
<div class="row">
<label for="image" class="col-sm-2 col-form-label">Category Image</label>
<div class="col-sm-7">
<input id="cat_image" type="file" class="form-control" name="cat_image">
<img src="" id="category-img-tag" width="200px" /> <!--for preview purpose -->
</div>
</div>
</div>
<div class="card-footer ml-auto mr-auto">
<button type="submit" class="btn btn-primary">{{ __('Add Category') }}</button>
</div>
</div>
下面是 Controller 部分:
public function upload(Request $request)
{
$cat = new Category;
$cat->name = request('category');
$cat->description = request('desc');
if ($request->file('cat_image'))
{
$categoryFile = $request->file('cat_image');
$mimeType = $categoryFile->getClientOriginalName();
$path = public_path() . '/storage/category/';
$categoryFile->move($path, $mimeType);
$cat->cat_image = $mimeType;
}
$cat->save();
toastr()->success($cat->name,'Category added!');
return redirect('/category');
}
我已经使用 Controller 而不是 ajax 完成上传,因为有一些复杂...所以请帮助我从 Controller 预览图像。
最佳答案
引用下面的链接
将此函数添加到您的 javascript 代码中
function readURL(input) {
if (input.target.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#category-img-tag').attr('src', e.target.result);
}
reader.readAsDataURL(input.target.files[0]);
}
}
$("#cat_image").change(function(){
readURL(this);
});
更改您的 blade.php 文件代码,如 <img src="#" id="category-img-tag" width="200px" />
<div class="row">
<label for="image" class="col-sm-2 col-form-label">Category Image</label>
<div class="col-sm-7">
<input id="cat_image" type="file" class="form-control" name="cat_image">
<img src="#" id="category-img-tag" width="200px" /> <!--for preview purpose -->
</div>
</div>
关于php - 如何在从 php laravel 中的 Controller 上传之前显示图像预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59540500/