当我运行命令:php artisan storage:link
时,将创建文件夹/public/storage
。
然后我有处理上传文件的代码:
// get file original name and extension here, then generate file new name $fileNameToStore
// set file path
$path = $request->file('my_file')->storeAs('public/uploaded_imgs', $fileNameToStore);
代码有效,并且上载的文件显示在/storage/app/public/uploaded_imgs/
文件夹中,这很不错,尽管/public/storage
文件夹中没有任何内容。
为什么uploaded_imgs
目录中没有/public/storage
文件夹?我做错了什么?
答案 0 :(得分:1)
在config / filesystems.php中,您可以...在公共目录中更改根元素
注意:您可以使用文件夹名称
代替上传'disks' => [
'public' => [
'driver' => 'local',
'root' => public_path() . '/uploads',
'url' => env('APP_URL').'/public',
'visibility' => 'public',
]
]
,您可以通过
进行访问Storage::disk('public')->put('uploaded_imgs', $request->file('my_file'));
或
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path(),
],
'uploads' => [
'driver' => 'local',
'root' => public_path() . '/uploads',
],
]
然后使用它:
Storage::disk('uploads')->put('filename', $file_content);
答案 1 :(得分:0)
尝试一下:
Storage::disk('public')->put('uploaded_imgs', $request->file('my_file'));
希望它能工作。
答案 2 :(得分:0)
当您运行php artisan storage:link
命令时,Laravel在“ public”文件夹下生成一个“存储”符号链接,该链接指向/storage/app/public
,因此您的代码是正确的。
没有public/storage
目录,它是一个指向/storage/app/public
的符号链接,这是生成uploaded_imgs
文件夹的位置。
public/storage => /storage/app/public
答案 3 :(得分:0)
您可以使用以下代码上传文件:
$file = $request->file('my_file');
$fileNameWithoutExtension = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
$path = "public/uploaded_imgs/" + $fileNameWithoutExtension +"."+$file->getClientOriginalExtension();
Storage::disk('local')->put($path, file_get_contents($file), 'public');