天涯海角异孤星
接上一篇,已知 DcatAdmin 配置了七牛云存储后,可以不改动原来的表单代码,就能将资源上传到七牛云存储空间,如:
$form->image('img_url')
->uniqueName()
->autoUpload()
->saveFullUrl()
->autoSave(false)
->removable(false);
这样使用,图片上传的时候,是先经过我们的服务器,然后再由服务器上传到七牛云,相当于做了一次中转。
图片文件一般都比较小,前端页面上传操作感觉不出有什么变化。但如果是一些大文件,比如视频文件,几十MB甚至几百MB,前端操作上传的时候,就会明显看到进度条到100%后仍要等待一段时间,最后才显示完成,体验非常不好!
DcatAdmin 图片/文件上传说明:https://learnku.com/docs/dcat-admin/2.x/picture-file-upload/8106#5e550f
我根据文档中的说明配置了七牛云,但在使用了 saveFullUrl
方法后,发现返回的资源链接是 http 而非 https。
阅读了扩展包源码,目前在 app/Providers/AppServiceProvider.php
文件的 boot 方法中添加两行代码得以解决:
public function boot()
{
// 七牛云设置默认url为https
$domain = config('filesystems.disks.qiniu.domains.https');
Storage::disk('qiniu')->getAdapter()->setDomainPrefix('https://'.$domain, 'default');
}
php8 安装 event 扩展后执行 php -m
报错:
Warning: PHP Startup: Unable to load dynamic library 'event' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20210902/event (/usr/local/lib/php/extensions/no-debug
-non-zts-20210902/event: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20210902/event.so (/usr/local/lib/php/
extensions/no-debug-non-zts-20210902/event.so: undefined symbol: socket_ce)) in Unknown on line 0
请更改 event.so 和 socket.so 的加载顺序,既在 php.ini 中将 extension=socket.so
写在 extension=event.so
前面,让socket扩展先加载。
如果是用 docker 版的 php,将文件 /usr/local/etc/php/conf.d/ 目录下的文件 docker-php-ext-event.ini
重命名为 docker-php-ext-z-event.ini
,让它排在 docker-php-ext-sockets.ini
后面即可。
默认情况下,Eloquent 会将 created_at
和 updated_at
字段转换为 Carbon 实例。
在调用 toArray 或 toJson 方法时,Carbon 会自动转换成类似这样的格式 2021-12-26T13:20:35.000000Z
,这个叫 ISO-8601 时间格式。如果转换成我们常见的 Y-m-d H:i:s
格式,应该是 2021-12-26 21:20:35
。
要想实现此功能,在模型中覆写 serializeDate
方法即可:
use DateTimeInterface;
protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}