【问题标题】:how can i fix " The file was not uploaded due to an unknown error. "我该如何解决“由于未知错误,文件未上传。”
【发布时间】:2020-04-28 18:53:28
【问题描述】:

嗨,我最近收到了这个错误。当我的函数想要上传一张关于产品的图片并将其添加到数据库时

由于未知错误,文件“2018-06-12-product.jpg”未上传。

我的功能:

public function store(Request $request)
{
    $this->validate($request,[
       'title'=>'required',
       'brand_id'=>'required',
       'category_id'=>'required',
       'body'=>'required',
       'price'=>'required|numeric',
       'discount'=>'numeric|max:2',
       'count'=>'required|numeric',
        'image'=>'required|image|mimes:jpeg,png,jpg|max:3024',
    ],[
        'title.required'=>'نامی برای محصول خود انتخاب کنید',
        'brand_id.required'=>'برند محصول خود را انتخاب کنید',
        'category_id.required'=>'دسته بندی محصول خود را مشخص کنید',
        'body.required'=>'توضیحی برای محصول خود بنویسید',
        'price.required'=>'مبلغی برای محصول خود معین کنید',
        'price.numeric'=>'لطفا در وروردی مربوط به قیمت از عدد استفاده کنید',
        'discount.numeric'=>'لطفا در وروردی مربوط به تخفیف از عدد استفاده کنید',
        'discount.max'=>'تخفیف مد نظر شما مجاز نیست. نمی توانید از دو رقم بیشتر وارد کنید ',
        'count.required'=>'مقدار موجود در انبار را مشخص کنید ',
        'count.numeric'=>'مقدار موجود در انبار را با عدد مشخص کنید',
        'image.required'=>'لطفا عکسی برای محصول خود انتخاب کنید',
        'image.image'=>'فایل مورد نظر باید یکی از فرمت های تصویری باشد (jpeg,png,jpg)',
        'image.mimes'=>'فایل مورد نظر باید یکی از فرمت های تصویری باشد (jpeg,png,jpg)',
    ]);

    $file=$request['image'];
    $imgname=$file->getClientOriginalName();
    $this->ImageProductUploader($file,'/upload/product/large/');
    $this->ImageProductThumbUploader($file,'/upload/product/thumb/');
    $product=product::create([
       'title'=>$request->title,
       'brand_id'=>$request->brand,
       'category_id'=>$request->category,
       'body'=>$request->body,
       'price'=>$request->price,
       'discount'=>$request->discount,
       'count'=>$request->count,
        'image'=>$imgname,
        'image_thumb'=>$imgname,
    ]);

    $product->category()->sync($request->input('category'));

    session()->flash('add_product','محصول جدید با موفقیت اضافه شد');
    return back();
}

我的文件上传功能:

 public function ImageProductUploader($file,$paths){

    $filename=$file->getClientOriginalName();
    $path=public_path($paths);
    $files=$file->move($path,$filename);
    $img=Image::make($files->getRealPath());
    $img->resize(675,675,null, function ($constraint) {
        $constraint->aspectRatio();
    });
    $img->save($path.$filename);
    return $paths.$filename;
}
public function ImageProductThumbUploader($file,$paths){

    $filename=$file->getClientOriginalName();
    $path=public_path($paths);
    $files=$file->move($path,$filename);
    $img=Image::make($files->getRealPath());
    $img->resize(175,175,null, function ($constraint) {
        $constraint->aspectRatio();
    });
    $img->save($path.$filename);
    return $paths.$filename;
}

和我的表格:

 <form class="form-horizontal" action="{{route('product.store')}}" method="post" enctype="multipart/form-data">
            {{csrf_field()}}

  </form> 

我总是使用此代码上传照片,但我不明白为什么会出现此错误

【问题讨论】:

  • 使用除该图像之外的所有图像?
  • 不,这只是一个例子......所有图像或任何类型的文件都有这个问题

标签: php laravel file laravel-5 upload


【解决方案1】:

如果您在服务器 public_path 上测试代码将无法正常工作。我面临同样的问题。所以我在.env 文件中创建了全局变量。

举个例子-

SERVER_URL = home/xyz/public_html/assets

因此您可以在项目中的任何位置使用此变量。在你的情况下 -

public function ImageProductUploader($file,$paths){

    $filename=$file->getClientOriginalName();
    $path=env('SERVER_URL').'/'.$paths;
    $files=$file->move($path,$filename);
    $img=Image::make($files->getRealPath());
    $img->resize(675,675,null, function ($constraint) {
        $constraint->aspectRatio();
    });
    $img->save($path.$filename);
    return $paths.$filename;
}
public function ImageProductThumbUploader($file,$paths){

    $filename=$file->getClientOriginalName();
    $path=env('SERVER_URL').'/'.$paths;
    $files=$file->move($path,$filename);
    $img=Image::make($files->getRealPath());
    $img->resize(175,175,null, function ($constraint) {
        $constraint->aspectRatio();
    });
    $img->save($path.$filename);
    return $paths.$filename;
}

【讨论】:

  • public_path() 工作正常,只需在index.php 中正确分配它,就像$app-&gt;bind('path.public', function() { return __DIR__; }); 一样。您还在代码中使用了env() 文件,这是一种反模式。您应该将它们分配给config/project.php 或其他东西,这样您就可以实际使用php artisan config:cache
  • 不,我在 wamp 的 localhost 中测试它......我从来没有遇到过这个问题
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 2019-12-04
  • 2019-12-03
  • 1970-01-01
相关资源
最近更新 更多