peinhu / AetherUpload-Laravel

A Laravel package to upload large files 上传大文件的Laravel扩展包
GNU General Public License v2.0
917 stars 126 forks source link

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

Open datangkang123 opened 4 years ago

datangkang123 commented 4 years ago

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',`
peinhu commented 4 years ago

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

datangkang123 commented 4 years ago

已经引入了。 script src="https://blog.dzbfsj.com/vendor/aetherupload/js/spark-md5.min.js">

安装自带的示例页面:https://blog.dzbfsj.com/aetherupload

peinhu commented 4 years ago

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

peinhu commented 4 years ago

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

peinhu commented 4 years ago

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

datangkang123 commented 4 years ago

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

datangkang123 commented 4 years ago

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

datangkang123 commented 4 years ago

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

peinhu commented 4 years ago

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

peinhu commented 4 years ago

在其他地方看到了你的问题😂,补充一下,上传后的文件访问,只需要通过请求特定路由便可获取,相关路由本扩展已经写好了,无需通过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下后文件就是公开的,任何人可以访问,无法控制权限。

sky-up commented 4 years ago

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

ahu commented 10 months ago

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

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