Php Cont:Url转换为字符串并保存问题

Php Cont:Url转换为字符串并保存问题,php,mysql,laravel,Php,Mysql,Laravel,这是我以前的帖子: 谢谢大家在之前的帖子中给我建议。现在我有另一个问题。我想寻求帮助并教我如何处理这些问题 我当前想在数据库中保存图像路径。正如前面的帖子提到的。我的数据库现在正在保存值1,而不是路径。这是我的函数上传代码 public function upload(Request $request, Task $task) { if(isset($_POST['delete'])) { $task->delete(); return redir

这是我以前的帖子:

谢谢大家在之前的帖子中给我建议。现在我有另一个问题。我想寻求帮助并教我如何处理这些问题

我当前想在数据库中保存图像路径。正如前面的帖子提到的。我的数据库现在正在保存值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');

}

我已经读了拉威尔的那一页。但不是很确定,我怎样才能解决这个问题

你试过这个吗<代码>请求::文件到
$Request->file

回复
照明\Support\Facades\Request
使用照明\Http\Request

参考链接在这里你可以看到

使用照亮\Http\Request未导入
照明\Support\Facades\Request

公共函数上传(请求$Request,任务$Task)
{
如果(isset($_POST['delete'])){
$task->delete();
返回重定向('/');
}否则{
$task->image=\Storage::disk('public')->put('image',$request->image);
$task->save();
返回重定向('/');
}
}
参考链接


并在刀片内部打印图像

您可以在laravel上使用
Storage::url()
函数

EX:
Storage::url($task->image)//这里的图像值来自任务表数据


如果文件是否保存,下面的ref link将返回1或0。这就是它将1插入数据库的原因:

\Storage::disk('public')->put('image', Request::file('image'))
成功保存后,要获取文件url,可以使用以下代码:

$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);
        }
    }
您的文件将保存在“存储/应用程序/公用文件夹”中。
如果您的文件未保存,请授予您的项目文件夹权限和允许权限。

我已经尝试过了。它说,如果我使用$request->file,就会出现一个错误。所以我改为使用Request::file作为动态方式,只需按原样放置,就可以看到数据库columin不放置任何额外的内容。我已经完成了测试,它正在运行symfony\Component\Debug\Exception\FatalThrowableError调用未定义的方法illumb\Support\Facades\Request::file(),这就是我得到的错误。我想我们最好转到对话来讨论这个问题。请导入右侧库
使用illumb\Http\Request使用这个我也试过了。数据库值变为1。您使用的是$task->image=\Storage::disk('public')->put('image',Request::file('image')),因此它将返回1或0。这就是它在数据库中插入1的原因。请核对我的答案。谢谢。但我在上传的图片文件夹中看不到。那么,它是看不见还是在存储/图像文件中被隐藏?案例我还想在welcome.blade.php中显示它。您可以阅读Laravel文档,了解文件存储、读取、获取url以及所有工作方式。谢谢你的建议。我读过。但仍然停留在这一部分。因此,我将再尝试一次,看看运气如何。默认情况下,此值设置为storage/app目录。因此,它将在storage/app/文件夹中存储一个文件。您可以从文件系统配置文件(即config/filesystems.phpSorry)更改存储路径,因为我的错误,我没有注意到。您使用disck“public”,因此您的文件将保存在storage/app/public/folder中
composer require intervention/image