我无法将文件上传到Laravel 5.4中的public_path文件夹。我无法理解出了什么问题,the documentation makes it look easy。 $request
是表单的POSTed内容。 filename
是通过表单提交的文件。
public function uploadFile($request) {
if ($request->hasFile('filename') && $request->file('filename')->isValid()) {
$file = $request->filename;
$hash = uniqid(rand(10000,99999), true);
$directory = public_path('files/'.$hash);
if(File::makeDirectory($directory, 0775, true)) {
return $file->storeAs($directory, $file->getClientOriginalName());
}
}
return NULL;
}
目录已创建,但内部没有文件。如您所见,该文件夹具有775权限。
我尝试添加了一个尾部斜杠。我尝试完全删除public_path
。什么都行不通。
我做错了什么? :(
答案 0 :(得分:5)
默认文件系统使用名为'local'的默认磁盘,使用商店, stroeAs 等在存储/应用文件夹商店中上传文件...
文件系统配置文件位于config / filesystems.php。
您可以在“本地”
下更改根路径从'root' => storage_path('app'),
到'root' => public_path('files'),
然后在您的代码中更改
$directory = public_path('files/'.$hash);
至$directory = public_path($hash);
或者您可以在config / filesystem.php
中创建新磁盘'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'my_upload' => [
'driver' => 'local',
'root' => public_path('files'),
'visibility' => 'public',
],
然后在存储文件时提及下面的新磁盘
$file->storeAs($directory, $file->getClientOriginalName(), 'my_upload');
执行以上所有操作后如果不能按顺序执行以下命令
php artisan config:clear
php artisan cache:clear
php artisan config:cache
答案 1 :(得分:-2)
你可以试试这个:
if(File::makeDirectory($directory, 0775, true)) {
return $file->store($directory, $file->getClientOriginalName());
}
希望这对你有帮助!