问题
之前搞得阿里oss文件上传功能,最近出问题了,客户反应经常出现设备端下载莫名闪退问题。因为在生产环境,所以急忙回退到旧版本,自己排雷。
根据设备端日志显示,无法申请足够的内存而导致程序gc,所以出现闪退。
但是旧版本普通上传是没有这种问题的,所以问题还在服务端文件上传功能。
查遍资料找到一处,上传时设置的:headers 请求头。
出问题的代码里是这样写的:
'Content-Type': "application/x-www-form-ulencoded"
然后自己在阿里oss关于设置Content-Type里找居然没找到这个value !!!
然后看了文档说,如果不设置类型,oss sdk会在上传后自动根据文件后缀填充 content-type。
解决
于是注释掉这条设置,然后上传以后,设备端果然可以正常下载,没有出现一次闪退现象。究其原因,代码里设置的话,固定死了文件的类型,然而如果文件是其他类型,比如 zip类型,设备端下载就会出现不匹配的问题,导致gc。(里面具体细节不甚清楚,或许涉及到文件类型转换,要申请较大空间吧)
自己坑了自己一把…