Laravel 7更改文件上传到的位置

问题描述

我的刀片文件中有一个文件上传表单。 但是,当我上传文件时,我看到它将文件保存到/storage//Applications/MAMP/tmp/PHP/PHPIVfP2L.mp4中,如何设置此上传​​文件保存到特定位置,就像我希望将它们保存在Laravel公共目录中一样位于Laravel根目录中的文件夹,因此路径为/ public / trainingvideos

下面是我的控制器代码文件上传代码在其中

public function addtraining(Request $req) {
    //Save to a MysqL database
    //print_r($req->input());
    $pwdata = new AddTraining;
    $pwdata->userid = $req->userid;
    $pwdata->video_title = $req->trainingtitle;
    $pwdata->video_description = $req->trainingdesc;
    $pwdata->video_url = $req->trainingvideo;

    if($req->hasFile('trainingvideo')) {
        //  Let's do everything here
        if($req->file('trainingvideo')->isValid()) {
            //
            $validated = $req->validate([
                'trainingvideo' => 'mimes:mp4,mov|max:10000',]);
            $extension = $req->trainingvideo->extension();
            $req->trainingvideo->storeAs('public_path()/public/trainingvideos',$req->trainingvideo.".".$extension);
            $url = Storage::url($req->trainingvideo.".".$extension);
            $pwdata->video_url = $url;
            //Session::flash('success',"Success!");
           
        }
    }
    //abort(500,'Could not upload video :(');
    $pwdata->save();

解决方法

/tmp目录是文件上传后临时存储的位置。

在您的控制器中,您需要实际存储该文件,文档将对此进行深入介绍; https://laravel.com/docs/7.x/requests#storing-uploaded-files

值得一提的是,如果将文件保留在tmp目录中,它们将在某个时候被垃圾回收,因此这不是存储文件的安全位置。