首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何上传一些字段的图像?

如何上传一些字段的图像?
EN

Stack Overflow用户
提问于 2019-07-09 18:21:30
回答 2查看 97关注 0票数 0

我试图上传一些必要的领域,如名称,描述图像。当我在没有图像字段的情况下插入数据时,它可以工作,但是当我试图上传图像文件时,它也不会将数据插入数据库。有人能告诉我我的密码可能出了什么问题吗?

控制器

代码语言:javascript
复制
public function store(Request $request)
{
    $this->validate($request, [
        'cat_name' => 'required|max:255',
        'description' => 'required|min:6',
        'cat_pic' => 'required|image|mimes:jpg,jpeg,png',
    ]);

    $fileName = null;

    if ($request()->hasFile('cat_pic')) {

       $file = $request()->file('cat_pic');
       $fileName = time().'.'.$file->getClientOriginalExtension();
       $destinationPath = public_path('/uploads/products/cats/');
       $file->move($destinationPath, $fileName);  
       $this->save();
   }

    Catagories::create([
        'cat_name' => $request->input('cat_name'),
        'description' => $request->input('description'),
        'cat_pic' => $fileName,

    ]);

    Session::flash('alert', __('messages.created'));
    Session::flash('alertClass', 'success');
    return redirect()->route('catagories');
}

视图

代码语言:javascript
复制
<div class="col-md-4 offset-5">
<div class="form-group">
    <form role="form" action="<?php echo e('/products/cats') ?>" method="POST" id="createcat" >
        {{ csrf_field() }}
      <p>
        Create New Product Category
      </p>
      <div class="form-group">
        <label for="cat_name">
          Name*:</label>
          <input type="text" class="form-control"
          id="cat_name" name="cat_name" required maxlength="50">
        </div>
        <div class="form-group">
        <label for="cat_pic">Category Image* </label>
    <input data-preview="#preview" class="form-control" name="cat_pic" type="file" id="cat_pic">
    <img class="col-md-6" id="preview" height="100px" width="20px" src="">
  </div>
          <div class="form-group">
            <label for="description">
              Description*:</label>
              <textarea class="form-control" type="textarea" name="description"
              id="description" placeholder="Category Description"
              maxlength="600" rows="3"></textarea>
            </div>
            <button type="submit" class="btn btn-lg btn-success btn-block" id="btncreatecat">Create</button>

          </form>
      </div>
    </div>

@endsection
@push('scripts')
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script type="text/javascript">
    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#preview').attr('src', e.target.result);
            }
            reader.readAsDataURL(input.files[0]);
        }
    }
    $("#cat_pic").change(function(){
        readURL(this);
    });
</script>

路由

代码语言:javascript
复制
Route::resource('products/cats', 'Admin\CatController');

和一些JQuery来预览图像

代码语言:javascript
复制
  <script type="text/javascript">
    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#preview').attr('src', e.target.result);
            }
            reader.readAsDataURL(input.files[0]);
        }
    }

    $("#cat_pic").change(function(){
        readURL(this);
    });
</script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-11 13:59:15

需要将enctype="multipart/form-data"添加到<form>标记中。

如下所示:

代码语言:javascript
复制
<form role="#" action="#" method="#" id="#" enctype="multipart/form-data">

这样您的表单就可以发送文本以外的其他内容。

票数 1
EN

Stack Overflow用户

发布于 2019-07-11 08:13:48

我意识到问题是我忘了在表单标记中添加enctype="multipart/form-data"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56958546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档