A.B*_*per 5 php laravel laravel-5.3
我正在使用一种API,用户可以发送文件url将其下载到其名称与用户名相同的特定文件夹中。
首先,我将新磁盘选项添加到名为的文件系统配置中user,该文件具有与经过身份验证的用户名相同的特定目录。像这样:
'disks' => [
'user' => [
'driver' => 'local',
'root' => NULL, //set on the fly after user authentication. (LogAuthenticated.php)
],
'local' => [
'driver' => 'local',
'root' => public_path('files'),
]
]
Run Code Online (Sandbox Code Playgroud)
当用户进行身份验证时,我在Illuminate\Auth\Events\Authenticated事件的侦听器上创建一个与身份验证的用户名相同的目录,并设置filesystems.disks.user.rootconfig,如下所示:
public function handle (Authenticated $event)
{
$username = $event->user->username;
if (!Storage::exists($username)) {
Storage::makeDirectory($username, 0775);
}
Config::set('filesystems.disks.user.root', public_path('files/' . $username));
}
Run Code Online (Sandbox Code Playgroud)
现在,我想从用户提供的外部URL存储文件。假设该文件具有jpg格式,我想photo使用唯一的名称将其存储在用户Directory的目录中。为此我写了这个:
Storage::disk('user')->putFile('photos', fopen($photo, 'r'));
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时出现此错误:
Call to a member function hashName() on string
Run Code Online (Sandbox Code Playgroud)
我不知道这是什么错误,为什么会发生。如果有人知道,请帮助我。
根据文档,您可以使用:
Storage::disk('user')->putFile('photos', new \Illuminate\Http\File($photo));
Run Code Online (Sandbox Code Playgroud)
如果照片是网址,您可以尝试:
Storage::disk('user')->put('file.jpg', file_get_contents($photo));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7374 次 |
| 最近记录: |