Yii使用iframe实现异步上传/下载文件

作者:zccst
yii常规post方式提交表单方式请参考:


除了常规post提交方式外,还有异步提交方式。
原理是使用iframe代替原来的页面跳转,大大提升用户体验。

一、上传文件

1,前端html代码

<form id="upForm" action="<?php echo $this->createUrl('repairUpload'); ?>" method="post" enctype ="multipart/form-data" target="upload_target">
<input type="file" name="repair_attached_file" id="repair_attached_file" /><input type="subm it" name="submitBtn" value="立即上传" />
<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>
<span id="upload_repairinfo_success" style="color:blue;"></span>



<script type="text/javascript">
function startUpload() {
var spanObj = document.getElementById("upload_repairinfo_success");
spanObj.innerHTML = " 开始上传";
document.getElementById("upForm").sumbit();
}
function stopUpload(responseText){
var spanObj = document.getElementById("upload_repairinfo_success");
//spanObj.innerHTML = "上传成功";
spanObj.innerHTML = responseText;
}
</script>



2、后端php代码


public function actionRepairUpload(){
$attach = CUploadedFile::getInstanceByName('repair_attached_file');
$retValue = "";
if($attach->size > 3*1024*1024){
$retValue = "提示:文件大小不能超过3M";
}else{
$f = file_get_contents($attach->tempName);
$a = new Attachment();
$a->ref_type = "failParts";
$a->data = $f;
$a->file_path = $attach->name;
$a->save();
$retValue = $a->id;
}
echo "<script type='text/javascript'>window.top.window.stopUpload('{$retValue}')</script>";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值