peinhu/AetherUpload-Laravel

6.0新版本下秒传无法实现,显示exists error

datangkang123 opened this issue · 12 comments

redis和predis都已配置,但无法使用秒传,换了多款主流的浏览器,谷歌火狐360浏览器等,一上传就显示exists error,关闭秒传就正常,不知什么原因?上传页面确认引入了相关js文件。

配置:
` /*
|--------------------------------------------------------------------------
| 启用秒传功能
|--------------------------------------------------------------------------
|
| 【一般设置】需要安装redis服务和predis扩展包。
|
*/

'instant_completion' => true,

/*
|--------------------------------------------------------------------------
| 头文件储存方式
|--------------------------------------------------------------------------
|
| 【一般设置】头文件储存disk的配置名称,如果为"redis",需在config/filesystems.php中添加以下配置。
| 'disks' => [
| ...
| 'redis' => [
| 'driver' => 'redis',
| 'disable_asserts'=>true,
| ],
| ...
| ]
|
| 支持选项: 'local', 'redis'
|
*/

'header_storage_disk' => 'redis',`

spark-md5.min.js现在不是可选而是必需,需要引入一下。

一般不会有这种问题,没人反映过。你建一个全新的laravel安装这个插件试试,只改instant_completion这一项,然后在示例页面中上传。

你之前改过根目录吧?建议先什么都别改,全部用默认的,只打开秒传功能instant_completion这项,先排除其他地方出问题的可能性。

我看了下代码很可能是redis相关配置不对,只有对redis操作报错的情况下,才会出现那个错误提示,你看下redis里面应该会有aetherupload_resource这个key,没有就是设置有问题。

谢谢回复,我全新安装了一个laravel,仅安装了这个插件,还是报这个错误。不知是否不支持laravel6.0
http://ab.dzbfsj.com/aetherupload

换了laravel5.8,上传正常,但6.0以上都是失败。

通过比较安装,同服务器环境,只打开秒传功能instant_completion这项。 laravel5.8使用秒传是正常的,6.0则错误。

好的感谢反馈,6.0还没适配,估计框架有些地方改动了导致不兼容,新版本刚出来不稳定,等我有时间看看。

在其他地方看到了你的问题😂,补充一下,上传后的文件访问,只需要通过请求特定路由便可获取,相关路由本扩展已经写好了,无需通过storage:link放到public目录下或自己实现路由,详见示例文件点击提交后显示的内容。

获取/展示:
www.your-host-name.com/aetherupload/display/file_201910_889cc0e3663efb2a46dd8564323740d7.mp4
下载:
www.your-host-name.com/aetherupload/download/file_201910_889cc0e3663efb2a46dd8564323740d7.mp4

不放到public目录下的好处是,可以控制文件访问权限,比如可以实现只有管理员才能查看。放到public下后文件就是公开的,任何人可以访问,无法控制权限。

我查看了返回exists error是因为在laravel6中Redis::hexists()方法是会返回true或者false,但是插件中是使用1或0去判断,所以进入了异常,没有测试在低于laravel6中,是否该方法返回1或0.

ahu commented

我查看了返回exists error是因为在laravel6中Redis::hexists()方法是会返回true或者false,但是插件中是使用1或0去判断,所以进入了异常,没有测试在低于laravel6中,是否该方法返回1或0.

我凑巧用的是 Laravel 6.x,然后也碰到了这个问题。然后修改RedisClient.php和RedisSavedPath.php后,可以了!