TP框架上传图片时报错“非法上传"处理

TP框架上传图片时报错“非法上传"处理,主要注意以下两点:

1.$_FILES中有多个上传域问题,所以针对不同的上传域,区别命名;

2.如同个上传域中有一些没有上传图片,则要重新收集好上传的信息(收集成非空的一维数组);

具体代码如下;

第一种情况:

if($this->_hasImg())
				{
					// 只上传表单中name叫做jqimg的图片
					$info = $upload->upload(array('jqimg'=>$_FILES['jqimg']));
					if(!$info)
						redirect(U('Ad/Ad/save/id/'.$ad_id), 3, $upload->getError());
					// 循环每一张图片,插入到jq-info表
					foreach ($info as $k => $v)
					{
						$url = $v['savepath'] . $v['savename'];
						$this->execute("INSERT INTO sh_ad_jq_info(img_url,ad_link,ad_id) VALUES('$url','{$_POST['jqtxt'][$k]}',$ad_id)");
					}
				}
				// 处理修改的图片
				if(isset($_POST['oldjqtxt']))
				{
					// 先上传图片修改的图片
					$info = $upload->upload(array('oldjqimg'=>$_FILES['oldjqimg']));
					$_k = 0;
					foreach ($_POST['oldjqtxt'] as $k => $v)
					{
						// 有没有上传新图片
						if($info && isset($info[$_k]))
						{
							// 上传了新图片
							// 先删除原图
							$_ourl = $this->query('SELECT img_url FROM sh_ad_jq_info WHERE id = '.$k);
							@unlink(IMG_URL_HD . $_ourl[0]['img_url']);
							// 再更新为新图
							$_url = $info[$_k]['savepath'] . $info[$_k]['savename'];
							$this->execute("UPDATE sh_ad_jq_info SET ad_link='$v',img_url='$_url' WHERE id=$k");
						}
						else 
						{
							$this->execute("UPDATE sh_ad_jq_info SET ad_link='$v' WHERE id=$k");
						}
						$_k++;
					}
				}
			}




第二种情况:

foreach($_FILES['imgjq_url']['tmp_name'] as $k=>$v)
			{

				if($v)
				{
					//删除原有硬盘图片
					$img_url = $this->query("SELECT imgjq_url FROM sh_ad_jq_info WHERE id = $k");

					@unlink(IMG_URL_HD .$img_url[0]['imgjq_url'] );


					//收集图片信息
					$arr = array();
					$arr['name'] = $_FILES['imgjq_url']['name'][$k];
					$arr['type'] = $_FILES['imgjq_url']['type'][$k];
					$arr['tmp_name'] = $_FILES['imgjq_url']['tmp_name'][$k];
					$arr['error'] = $_FILES['imgjq_url']['error'][$k];
					$arr['size'] = $_FILES['imgjq_url']['size'][$k];


					//上传图片处理
					$imgInfo = $upload->upload(array('imgjq_url' =>$arr ));

					if (!$imgInfo) {
						echo $upload->getError();die;
					}
					
					$imgjq_url = $imgInfo['imgjq_url']['savepath'].$imgInfo['imgjq_url']['savename'];

					//更新到数据库
					$this->execute("UPDATE sh_ad_jq_info SET imgjq_url = '$imgjq_url' WHERE id = $k");

				}
			}


你可能感兴趣的:(Thinkphp)