作者寄语:
ThinkPHP是一个了不起的框架,这点不可置否,不过在用他的多文件上传时,却出现了一些问题,什么问题呢?那就是当一个表单里有几个不同名的文件上传时,当修改时,如果其中一个不上传,就会乱,这是很不好的,于是就自己写了一个方法,请往下看。
isset($_POST['id']) ? $id = $_POST['id'] : $this->error('非法操作');
$pic1 = M('article')->where(array('id'=>$id))->getField('pic1');//获取原文件
$pic2 = M('article')->where(array('id'=>$id))->getField('pic2');//获取原文件
$pic3 = M('article')->where(array('id'=>$id))->getField('pic3');//获取原文件
$info = $upload->getUploadFileInfo();//获取上传信息集合
foreach ($info as $key => $value) {
switch ($value['key']) {
case 'pic1':
$pic1=$value['savename'];
break;
case 'pic2':
$pic2=$value['savename'];
break;
case 'pic3':
$pic3=$value['savename'];
break;
}
}
现在来解释一下,原理是通过获取到的$info进行$key值进行循环对比。当$info里有值与表单值一样时,即进行上传,同时,将原文件名进行重写,达到更新目的。这样就达到了当所有上传文件没有同时上传时,不出现上传对应问题,希望对大家有用,如有疑问,欢迎联系我们。本文原地址:http://www.shangfox.com/article-69.html