【发布时间】:2021-11-02 17:24:26
【问题描述】:
出于安全原因,我的托管服务提供商禁用了symlink() 功能,Laravel 上传文件的默认路径在 storage 文件夹中,所以我需要在我的 Cpanel 中将上传路径从 storage 目录更改为 public 目录public_html文件夹结构如下:
- files:
-- Laravel framework files and folders such as:
--- app
.
.
.
--- storage:
---- app:
----- public:
------ uploads
- assets:
-- CSS files and Javascript files and static images
- .htaccess
- favicon.ico
- index.php
- robot.txt
- web.config
我想变成这样(我的意思是当文件上传时,它会被存储在 public_html => uploads 文件夹的商店中):
- files:
-- Laravel framework files and folders such as:
--- app
.
.
.
--- storage:
---- app:
----- public
- assets:
-- CSS files and Javascript files and static images
- uploads:
--- user uploaded files
- .htaccess
- favicon.ico
- index.php
- robot.txt
- web.config
我将此代码添加到config\filesystem.php disks 数组中:
'uploads' => [
'driver' => 'local',
'root' => public_path(), // previously storage_path();
],
在我的 VideoController 中,上传方法代码是:
public function uploadVideo (Request $request) {
$target = $request['target'];
//Get filename with the extension
$fileNameWithExt = $request->file($target)->getClientOriginalName();
//$fileNameWithExt = $request->file('cover_image')->getClientOriginalImage();
//Get just file name
$filename = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
//Get just ext
$extension = $request->file($target)->getClientOriginalExtension();
//Filename to store
$fileNameToStore = $filename.'_'.time().'.'.$extension;
//Upload Image
$path = $request->file($target)->storeAs('public/uploads/' . $target, $fileNameToStore);
// I add this code to create uploads folder in pucli_html
Storage::disk('uploads')->put('filename', $filename);
return 'storage/uploads/'. $target .'/'.$fileNameToStore;
}
但它会在文件夹中创建一个公用文件夹
【问题讨论】:
-
$request->file($target)->move(public_path('uploads'), $fileNameToStore);