这是我以前的帖子:Laravel inserting normal image, value become null

感谢您在上一篇文章中给我的建议。现在我有另一个问题。我想寻求帮助,并教我这个问题。

我目前想将图像路径保存在数据库中。正如之前提到的那样。我的数据库现在正在保存值1而不是路径。这是我的函数上传代码。

public function upload(Request $request, Task $task)
{
    if(isset($_POST['delete'])) {

        $task->delete();
        return redirect('/');
    }
    else
    {
    $task->image = \Storage::disk('public')->put('image', Request::file('image'));

    $url = Storage::url('image');
    $url= urldecode(string ($url));
    $url->save();

    $task->save();
    return redirect('/');
    }


我也想在我的welcome.blade.php中显示它。那么,我将添加和更改什么?

这是我的全部代码:

public function index()
{
    $user = Auth::user();
    return view('welcome',compact('user'));
}

public function add()
{
    return view('add');
}

public function create(Request $request)
{
    $task = new Task();
    $task->description = Request::get('description');
    $task->user_id = Auth::id();
    $flagInserted = \Storage::disk('public')->put('image', Request::file('image'));

    $url = '';
    if ($flagInserted) {
        $url = Storage::url('image');
    }

    $task->image = $url;
    $duplicate = Task::where('description',Request::get('description'))->first();
    if($duplicate)
    {
        print_r("The data is exists");
    }
    else
    {
        $task->save();
    }
    return redirect('/');
}

public function edit(Task $task)
{

    if (Auth::check() && Auth::user()->id == $task->user_id)
    {
            return view('edit', compact('task'));
    }
    else {
         return redirect('/');
     }
}

public function update(Request $request, Task $task)
{
    if(isset($_POST['delete'])) {

        $task->delete();
        return redirect('/');
    }
    else
    {
        $task->description = Request::get('description');
        $task->save();
        return redirect('/');
    }
}

public function upload(Request $request, Task $task)
{
    if(isset($_POST['delete'])) {

        $task->delete();
        return redirect('/');
    }
    else
    {
        $flagInserted = \Storage::disk('public')->put('image', Request::file('image'));

    $url = '';
    if ($flagInserted) {
        $url = Storage::url('image');
    }

    $task->image = $url;
    $task->save();
    return redirect('/');
    }

}

public function storeTask(){

    $task= new Task();

    $task->name = request('name');
    $task->description = request('description');
    $task->image = request('image');
    $task->save();

    return redirect('/task');

}


我已经阅读了Laravel页面。但不是很确定,我怎么能解决这个问题。

最佳答案

如果文件未保存,则下面的命令将返回1或0。这就是为什么它将1插入到数据库中的原因:

\Storage::disk('public')->put('image', Request::file('image'))


成功保存后,要获取文件网址,可以使用以下代码:

$url = \Storage::url('file.jpg');


因此,您的代码将是:

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class FileuploadController extends Controller
    {
        //
        public function index() {
            return view('fileupload');
        }

        public function save(Request $request) {
            $image  = $request->file('image');
            $fileName = time() . '.' . $image->getClientOriginalExtension();

            $img = \Image::make($image->getRealPath());
            $img->stream(); // <-- Key point

            $flagInserted = \Storage::disk('public')->put($fileName, $img);

            $url = '';
            if ($flagInserted) {
                $url = \Storage::url('app/public/' . $fileName);
            }
            dd($url);
        }
    }


如果遇到找不到“类图像”之类的错误,请执行以下操作:

composer require intervention/image


您的文件将保存在“存储/应用/公共文件夹”中。
如果您的文件没有保存,则请允许并允许您的项目文件夹的权限。

关于php - 续:网址转换为字符串并保存问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59999108/

10-16 18:07