Yii上传文件 upload

{app.params.name}} {app.params.name}} {app.params.name}}

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

http://www.yiichina.com/forum/topic/45/

除了常规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>";  
}



版权声明

davidzhang 创作并维护的 Gowhich 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 Gowhich 博客( https://www.gowhich.com ),版权所有,侵权必究。

本文永久链接: https://www.gowhich.com/blog/361

comments powered by Disqus