ly0 / baidupcsapi

百度网盘api
MIT License
1.2k stars 235 forks source link

download流模式调用_request的问题 #13

Closed juliuswwj closed 8 years ago

juliuswwj commented 9 years ago

_request调用了check_login的wrap,里面会试图把content全部加载完毕。如果文件很大的话,程序就假死在这里,并导致后续raw.read()没数据。

ly0 commented 8 years ago

确实是个大问题,有时间fix掉

xm0625 commented 8 years ago

Java里面我是先判断一下mime是不是application/json,如果是,check_login,否则跳过.

ly0 commented 8 years ago

@juliuswwj 试一试? https://github.com/ly0/baidupcsapi/tree/hotfix/check_login

xm0625 commented 8 years ago

我看到python里的response是可以重复读取的,所以content应该是被buffer了?请求的时候会预读取?为了保证代码逻辑一致,方便迁移....我用了BufferedHttpEntity,这个东西会帮忙缓存流,但是也导致了一个问题,就是下载大文件对内存的压力比较大.(不切片下载的话)

ly0 commented 8 years ago

我个人的建议是大文件不要使用直接下载,而使用获取下载地址cookies到外部下载程序处理。

xm0625 commented 8 years ago

确实如此

xm0625 commented 8 years ago

mime判断可能还要加一个text/html,有的接口是以这种类型返回

xm0625 commented 8 years ago

比如缩略图接口,获取缩略图失败时的返回

ly0 commented 8 years ago

那就这样? 233333

xm0625 commented 8 years ago

:joy:应该可以了