php - 如何在从 php laravel 中的 Controller 上传之前显示图像预览

标签 php laravel image upload

我在一个项目中工作,我想为类别上传图像。 上传部分工作顺利。 我想要的是在上传之前,当用户选择图像时,应显示所选图像的预览以及图像名称。 在这种情况下我很迷茫。

下面是我的观点:

{!! 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 预览图像。

enter image description here

最佳答案

引用下面的链接

enter link description here

将此函数添加到您的 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/

相关文章:

python - 将PNG文件导入Numpy?

java - 文本文件到图像转换

php - 之字形扫描 N x N 阵列

PHP PDO 如何只保留一个 MYSQL 连接

php - 克隆PHP PDO记录集对象以计算select语句返回的行

mysql - 在 Laravel 中获得最高分

php - 拉拉维尔 : BadMethodCallException Method [show] does not exist

php - MySQL 获取考虑不同月份长度的月度发票记录

mysql - 方法 Illuminate\Database\Eloquent\Collection::paginate 不存在。”

ios - 删除图像中的 alpha channel