问题描述
我的刀片文件中有一个文件上传表单。 但是,当我上传文件时,我看到它将文件保存到/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
目录中,它们将在某个时候被垃圾回收,因此这不是存储文件的安全位置。