Codeigniter里的无刷新上传的实现代码(2)

class Files_Model extends CI_Model { public function insert_file($filename, $title) { $data = array( 'filename' => $filename, 'title' => $title ); $this->db->insert('files', $data); return $this->db->insert_id(); } }

保存上传文件的文件夹

不要忘记在根目录建立个files文件夹,并给他写入权限。

第四步,文件列表

成功上传后,我们需要更新文件列表,方便修改。

Javascript部分

打开site.js,在后面追加:

function refresh_files() { $.get('./upload/files/') .success(function (data){ $('#files').html(data); }); }

Jquery的简单应用。Ajax取得指定url的内容,填充到#files的div里。

控制器部分

不多说了。

public function files() { $files = $this->files_model->get_files(); $this->load->view('files', array('files' => $files)); }

调用模型的方法取得数据,再加载到files视图里显示。

模型部分

public function get_files() { return $this->db->select() ->from('files') ->get() ->result(); }

视图部分

新建files.php视图

<?php if (isset($files) && count($files)) { ?> <?php foreach ($files as $file) { ?> Delete <?php echo $file->title?> <?php echo $file->filename?> <?php } ?>

<?php } else { ?> No Files Uploaded <?php } ?>

删除文件

Javascript部分

$('.delete_file_link').live('click', function(e) { e.preventDefault(); if (confirm('Are you sure you want to delete this file?')) { var link = $(this); $.ajax({ url : './upload/delete_file/' + link.data('file_id'), dataType : 'json', success : function (data) { files = $(#files); if (data.status === "success") { link.parents('li').fadeOut('fast', function() { $(this).remove(); if (files.find('li').length == 0) { files.html('<p>No Files Uploaded</p>'); } }); } else { alert(data.msg); } } }); } });

控制器部分

public function delete_file($file_id) { if ($this->files_model->delete_file($file_id)) { $status = 'success'; $msg = 'File successfully deleted'; } else { $status = 'error'; $msg = 'Something went wrong when deleteing the file, please try again'; } echo json_encode(array('status' => $status, 'msg' => $msg)); }

模型部分

public function delete_file($file_id) { $file = $this->get_file($file_id); if (!$this->db->where('id', $file_id)->delete('files')) { return FALSE; } unlink('./files/' . $file->filename); return TRUE; } public function get_file($file_id) { return $this->db->select() ->from('files') ->where('id', $file_id) ->get() ->row(); }

嗯,简单的应用。没有涉及的权限、上传的进度条等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/88e94b94d6bbde3b68d6e7ebfbcaac2d.html