图像另存为tmp文件

时间:2018-08-25 08:48:15

标签: php laravel

我正在尝试使用Laravel保存图像

图像以tmp文件的形式保存在数据库中,为什么呢?

在数据库中另存为C:\ xampp \ tmp \ phpA3EB.tmp的图像

我该如何解决?

在控制器中:

public function update(Request $request, Bank $bank)
{
    if ( isset($request->photo) && $request->photo ) {

        $request['image'] = UploadImage($request->file('photo'), 'bank', '/banks');

        @unlink(public_path('/uploads/banks/') . $bank->image);
    }

    $updated = $bank->update($request->all());

    $bank->updateTranslations([
        'name' => $request->get('name_en'),
    ]);

    return $updated ?
        redirect()->route('banks.index')->with('success', trans('messages.updateTrue')) :
        redirect()->back()->with('warning', trans('messages.updateFalse'));
}


function UploadImage($inputRequest, $prefix, $folderNam)
{
    $imageName = $prefix.'_'.time().'.'.$inputRequest->getClientOriginalExtension();

    $destinationPath = public_path('/uploads/'.$folderNam);

    $inputRequest->move($destinationPath, $imageName);

    return $imageName ? $imageName : false;
}

3 个答案:

答案 0 :(得分:0)

请尝试以下方法:

public function UploadImage($image, $path)
{
    $type = $image->getMimeType();
    $ext = substr($type, 6, strlen($type) -1 );

    $picName = uniqid() . '.' .$ext;

    $image->move(public_path($path), $picName);

    return $path . '/' . $picName;
  }
}

答案 1 :(得分:0)

请尝试:

public function UploadImage($image, $prefix, $path)
{
 $ext = $image->extension();

 $filename = $prefix.'_'.uniqid() . '.' .$ext;

 $image->move(public_path('/uploads/'.$path), $filename);

 return $filename;
}

答案 2 :(得分:0)

我也和我挣扎了一段时间。但是,我意识到我做的还不错,但是问题是如何在数据库中保存/创建它。

这是起作用的。

public function store(Request $request)
{


    $request->validate([
        'title'=>'required',
        'features'=>'required',
        'website'=>'required',
        'img'=>'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);


        $input=$request->all();

        $imagePath=$request->file('img');
        $imageName=time().'.'.$imagePath->getClientOriginalExtension();

        $imagePath->move('uploads',$imageName);
        $input['img']=$imageName;

        Portfolio::create($input);

    return Redirect::to('portfolio')->with('success','Great! Portfolio item created successfully.');
}