首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像上传=> LogicException无法猜测mime类型,因为没有猜测器可用(您启用php_fileinfo扩展了吗?)

图像上传=> LogicException无法猜测mime类型,因为没有猜测器可用(您启用php_fileinfo扩展了吗?)
EN

Stack Overflow用户
提问于 2018-03-18 13:29:45
回答 2查看 3.4K关注 0票数 1

下面是-> http://laraveldaily.com/upload-multiple-files-laravel-5-4的教程。当我去张贴我的广告时,添加的内容没有照片。我的错误信息是

无法猜测mime类型,因为没有猜测器可用(您启用了php_fileinfo扩展吗?)

我已经启用了php_fileinfo并对服务器进行了重新定位,但是我想知道它是否有效。关于如何解决这个问题还有其他的想法吗?

代码语言:javascript
复制
    public function store(Request $request){



    $Advert = PropertyAdvert::create([
        "address"     => $request->address,
        "county"      => $request->county,
        "town"        => $request->town,
        "type"        => $request->type,
        "rent"        => $request->rent,
        "date"        => $request->date,
        "bedrooms"    => $request->bedrooms,
        "bathrooms"   => $request->bathrooms,
        "furnished"   => $request->furnished,
        "description" => $request->description,
        "user_id" => Auth::id(),
    ]);


    foreach ($request->photo as $photo) {
            $filename = $photo->store('photo');
            PropertyAdvertPhoto::create([
                'property_id' => $Advert->id,
                'filename' => $filename
            ]);
          }

    $id = $Advert->id;

    return redirect("/property/$id");
  }

UploadRequest“请求文件”

这是存储所有验证规则的地方。

代码语言:javascript
复制
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UploadRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
          return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
      $rules = [
              'address' => 'required'
          ];
          $photos = count($this->input('photo'));
          foreach(range(0, $photos) as $index) {
              $rules['photo.' . $index] = 'min:100';
          }

          return $rules;

    }


}

上传表格

代码语言:javascript
复制
 <form method="POST" action="/property" enctype="multipart/form-data">
                        {{ csrf_field() }}

                          <div class="form-group row">
                              <label for="photo" class="col-md-3 col-form-label text-md-right">Images</label>
                              <div class="col-md-9">
                                <input required type="file" class="form-control" name="photo[]" multiple>
                              </div>
                            </div>
EN

回答 2

Stack Overflow用户

发布于 2018-03-18 15:24:16

您的代码看起来不错,我总是使用foreach,但是循环的问题是您需要使用file方法调用您的fileinput

foreach( $request->file('photo') as $photo )

PS: $request->photo$request->file('photo')之间有很大的区别,所以要猜测mime类型,应该使用file方法。

干杯。

票数 0
EN

Stack Overflow用户

发布于 2018-03-19 06:28:54

问题来自于您的验证!

如果你有这样的东西:

代码语言:javascript
复制
  $this->validate($request, [
        'image' => 'required|mimes:jpg,png,jpeg,gif,svg|max:2048',
    ]);

然后将验证代码替换为:

代码语言:javascript
复制
        'image' => 'required|image|max:2048',

在我的例子中,我得到了进一步的更新,例如:

代码语言:javascript
复制
'image' => 'required|image|dimensions:min_width=300,min_height=400,ratio=3/4|max:2048',

希望这能有所帮助。不幸的是,我没有找到原因-为什么Laravel无法检索MIME类型并验证上传到这里的图像文件!,这可能是因为另一个缺少的PHP扩展。

医生在这里中查找所有可能的验证案例。

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

https://stackoverflow.com/questions/49348423

复制
相关文章

相似问题

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