您的位置:首页 > 编程语言 > PHP开发

php无刷新文件上传(原创)Codeigniter框架下测试

2012-12-10 15:14 363 查看
页面(upload.php):(红色加粗部分是重点)

<form id="upload_form" action="<?php echo site_url('welcome/upload');?>" method="post" enctype="multipart/form-data" target="iupload">

<input type="hidden" name="MAX_FILE_SIZE" value="102400"/>

<input type="file" name="attachment" id="attachment"/><br/>

<input type="button" value="上传" id="upload"/></p>

</form>

<iframe name="iupload" style="border:0;width:0px;height:0px;"></iframe>

上传信息:<span id="upload_info"></span>

注意:form表单的target必须和iframe的name对应,否则一切都无用



php处理:(需要两个函数)

处理文件上传

public function upload() {

if (!empty($_FILES)) {

$files = $_FILES['attachment'];

$tmp_name = $files['tmp_name'];

$file_name = $files['name'];

//$file_name = iconv('utf-8', 'gb2312', $files['name']);在utf8编码下可以防止中文乱码

if (move_uploaded_file($tmp_name, './upload/' . $file_name)) {

$this->session->set_userdata('state', 1);//将状态保存到session中

} else {

$this->session->set_userdata('state', 0);

}

}

}



获取状态

public function upload_state($state = 2) {

$state = $this->session->userdata('state');// 从session获取状态并输出

if ($state != 2) {

echo $state;

}

}



页面ajax代码(用到了jquery)

$(function() {

var start;

$('#upload').click(function() {

$('#upload_form').submit();

$('#upload_info').html('开始上传...');

start = setTimeout(us, 500);//设置一个计时器,隔一段时间请求上传状态

});

function us() {

var url = 'http://www.ci2.com/welcome/upload_state';

$.post(url, function(data) {

if (1 == data) {

$('#upload_info').html('上传成功');

clearTimeout(start);//获取状态后清除计时器

} else {

$('#upload_info').html('上传失败');

clearTimeout(start);

}

});

}

});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: