Laravel 上传附件及访问
1.上传代码:
public function img(Request $request) { $file = $request->file('file'); $old_name = $file->getClientOriginalName();//文件原名 $ext = $file->getClientOriginalExtension(); // 扩展名 $type = $file->getClientMimeType(); // image/jpeg $path = $file->storeAs(date('Y-m-d') . '/avatars', 'ceshi'.time().'.jpg'); if($path){ $data = array( 'code' => 200, 'msg' => '上传成功', 'data' => array( 'src' => "/storage/".$path, 'old_name' => $old_name, 'ext' => $ext, 'type' => $type ), ); }else{ $data = array( 'code' => 400, 'msg' => '上传失败', 'data' => array( ), ); } return json_encode($data,JSON_UNESCAPED_UNICODE); }
获取上传附件其他信息
$file->guessExtension() //根据mime类型返回扩展名。return string | null $file->getMimeType() //返回文件的mime类型。return string | null $file->move(string $directory, string $name = null) //将文件移动到一个新的位置。return File $file->getClientOriginalName() //返回原始的文件名。return string | null $file->getClientOriginalExtension() //返回原始文件扩展名。 return string $file->getClientMimeType() //返回文件mime类型。return string | null $file->guessClientExtension() //根据客户端mime类型返回扩展。return string | null $file->getClientSize() //返回文件的大小字节。return int | null $file->getError() //返回上传文件的错误。return int $file->isValid() //返回文件是否成功上传。return bool $file->getMaxFilesize() //返回在php.ini中配置的上传文件的最大大小。return static int $file->getErrorMessage() //返回一个包含信息的上传错误信息。return string
2.访问设置
(1)因为Laravel框架项目绑定目录为Public目录,所以要访问 storage 目录需要创建一个软连接,让这个软连接指向需要访问的storage目录。命令如下:
php artisan storage:link
执行结果如下图:
centos服务器创建软连接命令:
ln -s /opt/web/gedai-api/storage/app/public /opt/web/gedai-api/public/storage
ln -s 目标目录 软连接目录
(2)修改项目配置文件:\config\filesystems.php,修改local为下面代码
'local' => [ 'driver' => 'local', 'root' => storage_path('app/public'), ],
此时就可以通过 域名 + “src” 路径访问到上传的图片了。