在 HTTP 客户端,打开 文件 下面的上传文件请求,地址设置成 files?post=1,这样上传的这个文件会属于 id=1 的这个内容。上传文件 接口需要验证用户的身份,类型是 Bearer Token,先去掉之前在 TOKEN 里添加的内容。
打开 用户登录 李白 这个请求,用 李白 这个用户的身份申请登录,复制一下请求回来的 token 值,再打开上传文件请求,把复制的令牌值粘贴到这里。
然后配置一下请求的主体,类型是 Multipart forms ,添加一个 file 字段,字段值的类型是 file,然后选择一个在本地设备上的图像文件。 点击 Select , 再发送一下这个上传文件请求。
这里得到了一个 413 响应,Request Entity Too Large, 这是因为 Nginx 服务器默认只允许请求的主体数据不能超过 1m。
下面可以去修改一下 nginx 的配置,让它允许更大的请求主体数据, 在终端,用 vi 编辑一下 /etc/nginx/nginx.conf 文件。
打开这个配置文件以后,在 http 这个区块里面,可以添加一个配置,按小 i 进入编辑模式,输入 client_max_body_size ,把大小设置成 512m。
你也可以把这行配置放到一个 server 区块里。这样配置就只会影响某个服务器。放在 http 区块里会影响所有的服务器。
按下 esc 退出,输入 :wq 保存并退出。 执行 sudo nginx -t 测试一下配置文件。确定没有问题。
再执行 sudo systemctl reload nginx,重载一下 nginx 服务。这样配置才会立即生效。
回到 http 客户端,重新发送一下这个上传文件请求,得到了一个状态码是 400 的响应,再发送一次这个请求,又得到了一个状态码是 500 的响应,说明我们的应用遇到了一些问题。
在终端,执行一下 pm2 logs xb2-node 查看一下应用的日志,你会看到这个 no such file or directory 这个错误提示。
原因是存储上传文件的目录不存在,进入到 /mnt/xb2-node ,在里面创建一个目录,名字是 uploads。 确定有这个目录以后。再回到 http 客户端,发送一下这个请求。
这次就成功上传了文件。回到终端,可以查看一下项目的 uploads 目录里的东西。里面会有刚才在客户端上传上来的文件。
在数据库客户端, 再观察一下 file 数据表里的数据记录。这里会出现一条文件数据。
在 http 客户端,打开 文件服务 请求,修改一下请求的地址,files/1/serve?size=large ,发送请求,现在你看到的就是刚才我们上传的那个图像文件。
再打开 文件信息 请求,修改一下请求的地址 files/1/metadata 发送一下这个请求。 得到的响应就是刚才上传的那个图像文件相关的一些信息。