thinkphp+jquery+iframe异步上传

最近在做的项目要用到图片异步上传,由于ajax不能实现异步上传,所以只能用iframe,附上部分关键代码!

html页面代码

    <form method="post" action="__SELF__">
	    	<input type="hidden" id="logo" size="40" name="Info[logo]" />
	        <table cellspacing="1" cellpadding="3" width="100%">
	        	 <tr>
	                <td class="label">Logo</td>
	                <td>
	                	<img id="pre_img" />
	                    <input id="selImg" type="button" value="选择图片" />
	                </td>
	            </tr>


隐藏的iframe和点击弹出窗

<iframe style="display:none;" name="ifr"></iframe>
<div id="upload" style="position:absolute;display:none;padding:10px;border:1px solid #CCC;background:#FFF;width:360px;">
<form id="pre_form" target="ifr" method="POST" action="__CONTROLLER__/ajaxUpload" enctype="multipart/form-data">
	图片:<input type="file" name="img" /><input type="submit" value="上传" />
	<a id="close" href="javascript:void(0);"> [关闭] </a>
</form>
</div>


js处理代码

<script>
$("#close").click(function(){
	$("#upload").hide();
});
$("#selImg").click(function(){
	// 获取按钮的位置
	var p = $(this).position();
	var div = $("#upload");
	div.css({
		"left":p.left+"px",
		"top":p.top+"px",
		"display":""
	});
});

提交到后台的php文件ajaxUpload,做你自己的上传或缩略图片操作

	public function ajaxUpload(){
		// 读取上传图片的配置
		$config = C('UPLOAD_CONFIG');
		// 设置上传路径
		$config['savePath'] = 'Goods/Temp/';
		$upload = new \Think\Upload($config);
		// 执行上传
		$info = $upload->upload();
		if(!$info)
			die($upload->getError());
		// 设置模型原图地址
		$url = 'Uploads/'.$info['img']['savepath'] . $info['img']['savename'];
		$thumb_url = 'Uploads/'.$info['img']['savepath'] . 'sm_' .$info['img']['savename'];
		$image = new \Think\Image(); 
		$image->open($url);
		$image->thumb(100, 100)->save($thumb_url);
		// 在子窗口中的执行JS把数据放到父窗口的表单中
		$index = __ROOT__;
		$js = '<script>';
		$js .=<<<JS
		parent.document.getElementById("logo").value='$url';
		parent.document.getElementById("pre_img").src='$index/$thumb_url';
		parent.document.getElementById("upload").style.display="none";
		parent.document.getElementById("pre_form").reset();
		
JS;
		$js .= '</script>';
		echo $js;
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值