thinkphp 自带上传文件(非法文件上传)

浏览:3835 发布日期:2013/11/19 分类:技术分享
现在做项目,遇到一个问题,如果同一个页面,有多个上传,每个上传对应不同的字段(都是在同一个表),模板如下:身份证图片:<input type="file" name="idcard"/>
头像:<input type="file" name="photo"/>
点击提交,结果,第一个图片可以正常上传,但是第二个就显示非法文件上传.然后我改用以下的方法:身份证图片:<input type="file" name="p[]"/>
头像:<input type="file" name="p[]"/>
两张图片能上传成功,但是出现了一个问题,上传之后返回的信息,无法判断到哪一张是属于身份证图片还是头像,这样就无法达到我想要的效果.我已经百度过了,都没有具体的解决办法.所以惟有自己动手吧.

最后我想到一个办法,把模板上的name值,设定一个键值(建议用数字),只要这个键值和上传之后返回的数组的键值能一一对应,那么我就知道哪个图片是身份证图片还是头像图片.
所以只能在UploadFile.class.php里面直接修改代码
1.大约在243行那里,
$fileInfo[] = $file;改成$fileInfo[$file['key']] = $file;2.大约在347行那里,
$count     =     count($file['name']);
for ($i=0; $i<$count; $i++) {
  foreach ($keys as $key)
    $fileArray[$n][$key] = $file[$key][$i];
  $n++;
}
都注释掉,然后在下面加上:               foreach($file['name'] as $k=>$v){
                   foreach ($keys as $key){
                       $fileArray[$k][$key] = $file[$key][$k];
                   }
               }
最后模板上改为:身份证图片:<input type="file" name="p[1]"/>
头像:<input type="file" name="p[2]"/>
这样只要实例化一次,上传成功之后返回的数组的键值,就会跟上面模板的键值(1,2)一一对应

我附上修改后的文件吧.

附件 UploadFile.class.zip ( 4.67 KB 下载:68 次 )

最佳答案
评论( 相关
后面还有条评论,点击查看>>