用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1994|回复: 5
收起左侧

[讨论/交流] Upload库是否有Bug?

[复制链接]
发表于 2012-12-24 17:30:06 | 显示全部楼层 |阅读模式
本帖最后由 aniven 于 2012-12-25 08:39 编辑

CI通过Upload库进行上传文件,设置的allowed_types里包含xls文件,但是部分电脑上传提示文件类型不被允许,这些不能上传的电脑有两个特征,1是XP系统,2是没有安装Microsoft Excel(另一台上传正常的电脑2003系统,有装Excel但是xls的默认关联不是Office Excel而是WPS),检查post headers发现,在Request payload中Content-Type不一致,都是使用同个版本的Chrome浏览器,请问这是Upload.php的Bug?还是系统问题,如果是系统问题,什么因素决定Content-Type的值?

1.成功
Content-Disposition: form-data; name="userfile"; filename="1234.xls"
Content-Type: application/vnd.ms-excel

2.失败
Content-Disposition: form-data; name="userfile"; filename="1234.xls"
Content-Type: application/octet-stream

发表于 2012-12-25 11:14:31 | 显示全部楼层
你要设置 mimes 在 config 目录下
发表于 2012-12-25 13:26:43 | 显示全部楼层
设置 一下的啊!!!
发表于 2012-12-25 17:19:10 | 显示全部楼层
Hex 发表于 2012-12-25 11:14
你要设置 mimes 在 config 目录下

不会出现漏洞吗?
Content-Type: application/octet-stream表示所有文件类型啊
发表于 2012-12-25 18:32:37 | 显示全部楼层
qingxin 发表于 2012-12-25 17:19
不会出现漏洞吗?
Content-Type: application/octet-stream表示所有文件类型啊

由于你的浏览器没有上报正确的 mime 你只能使用这个方法。
如果不检测 mime 和设置成这样是没区别的。
如何处理要自己权衡,呵呵
 楼主| 发表于 2013-1-17 16:08:02 | 显示全部楼层
mimes.php里本来就是这样的:

'xls'        =>        array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'),

不清楚为什么会变成 application/octet-stream,我现在只能开放所有文件类型。

本版积分规则