CI框架结合jQuery实现上传多张图片即时显示
一、Html代码如下:
<tr>
<td class="txt_r"><span class="orange">* </span>上传图片:</td>
<td id="picInput">
<form id="upload_form" method="post" enctype="multipart/form-data" style="" action="/admin/upload/uploadCover" >
<input type="file" size="30" name="userfile[]" id="userfile" class="input" onchange="$('#upload_form').submit();return false;" multiple="multiple">
</form>
</td>
</tr>
<tr>
<td>
</td>
<td>
<div id="preview_cover" style="display:none;margin-top: 5px;" >
</div>
</td>
</tr>
二、jQuery代码如下:
$(function(){
$('#upload_form').submit(function(){
var val = $("#userfile").val();
if(val === ''){
weebox_popInfo('e','请选择要上传的图片!','','alert');
return false;
}
var filepath =/\.(jpg|jpeg|gif|JPG|JPEG|GIF|PNG|png)$/i;
if(!filepath.test(val)){
weebox_popInfo('e','要求为图片文件!','','alert');
return false;
}
$(this).ajaxSubmit(uploadOptions);
return false;
});
var uploadOptions = {
dataType:'json',
clearForm:true,
resetForm:true,
beforeSubmit: beforeSubmit,
success: function(json) {
var imgStr = "";
var urlString = "";
if(json.code==1){
var imgArr = json.url;
if($.isArray(imgArr)){
urlString = imgArr.join(',');
for(var i=0;i<imgArr.length;i++){
imgStr += "<div id='thumb"+i+"' style='width:100px; height:125px; float:left;margin-right: 10px;'>";
imgStr += "<img src='"+imgArr[i]+"' style='width: 100px;height: 100px;float: left;'/><br/>";
imgStr += "<input type='radio' name='default_picture' id='default_picture' value='"+imgArr[i]+"' style='width: 20px;height: 18px;float:left;' />主图";
imgStr += "<a id='delete' onclick='delete_cover(this)' style='width: 20px;height: 20px;margin-left: 12px;text-decoration: none;color:#ff5a54;'>删除</a>";
imgStr += "</div>";
}
}else{
urlString = imgArr;
imgStr += "<div id='thumb0' style='width:100px; height:125px; float:left;margin-right: 10px;'>";
imgStr += "<img src='"+imgArr+"' style='width: 100px;height: 100px;float: left;'/><br/>";
imgStr += "<input type='radio' name='default_picture' id='default_picture' value='"+imgArr+"' style='width: 20px;height: 18px;float:left;' />主图";
imgStr += "<a id='delete' onclick='delete_cover(this)' style='width: 20px;height: 20px;margin-left: 12px;text-decoration: none;color:#ff5a54;'>删除</a>";
imgStr += "</div>";
}
var existUrl = $("#pictures").val();
var inputTab = "";
if(typeof existUrl !== "undefined"){
var existArr = existUrl.split(',');
for(var j=0;j<imgArr.length;j++){
existArr.push(imgArr[j]);
}
var changeUrl = existArr.join(',');
$("#pictures").val(changeUrl);
}else{
inputTab = "<input type='hidden' name='pictures' id='pictures' value='"+urlString+"'>";
}
imgStr += inputTab;
$('#preview_cover').append(imgStr).show();
}else{
weebox_popInfo('e',json.msg,'','alert');
}
}
};
var beforeSubmit = function() {}
})
function delete_cover(tag) {
if($(tag).prev().attr("checked")){
weebox_popInfo('i', "不能删除主图!");
}else{
$(tag).parent().remove();
}
var checked_img = $(tag).prev().val();
var pictures = $('#pictures').val();
var pictureArr = pictures.split(',');
for(var i=0;i<pictureArr.length;i++){
if(checked_img == pictureArr[i]){
pictureArr.splice(i,1);
}
}
$("#pictures").val(pictureArr);
}
三、PHP代码如下:
public function uploadCover()
{
$dirpath='./upload/profile/';
if(!is_dir($dirpath)){
mkdir($dirpath);
}
$config['upload_path'] = $dirpath;
$config['allowed_types'] = 'jpg|jpeg|gif|JPG|JPEG|GIF|PNG|png';
$config['encrypt_name']=true;
$this->load->library('upload', $config);
$count=count($_FILES["userfile"]["name"]);//页面取的默认名称
$url_arr=array();
for($i=0;$i<$count;$i++){
$field_name = 'cover' . '_' . $i;
$_FILES[$field_name] = array('name' => $_FILES["userfile"]['name'][$i],
'size' => $_FILES["userfile"]['size'][$i],
'type' => $_FILES["userfile"]['type'][$i],
'tmp_name' => $_FILES["userfile"]['tmp_name'][$i],
'error' => $_FILES["userfile"]['error'][$i] );
if ($this->upload->do_upload($field_name)) { //默认名是:userfile
$upload_data = $this->upload->data();
$image_url = array();
$image_url['image_url'] = '/misc/upload/profile/'.$upload_data['file_name'];
$url_arr[] = $image_url;
}else{
echo $this->upload->display_errors();
exit(json_encode(array('code'=>0,'msg'=>'系统错误!')));
}
}
$url_arr = array_column($url_arr,'image_url');
exit(json_encode(array("code"=>1,"url"=>$url_arr))); }
}
四、效果图如下:

CI框架结合jQuery实现上传多张图片即时显示的更多相关文章
- CI框架整合UEditor编辑器上传功能
最近项目中要使用到富文本编辑器,选用了功能强大的UEditor,接下来就来讲讲UEditor编辑器的上传功能整合. 本文UEditor版本:ueditor1_4_3_utf8_php版本 第一步:部署 ...
- JS框架_(JQuery.js)上传进度条
百度云盘 传送门 密码: 1pou 纯CSS上传进度条效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- 从零开始编写自己的C#框架(23)——上传组件使用说明
文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发 ...
- 强大的支持多文件上传的jQuery文件上传插件Uploadify
支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...
- jQuery文件上传插件Uploadify(转)
一款基于flash的文件上传,有进度条和支持大文件上传,且可以多文件上传队列. 这款在flash的基础上增加了html5的支持,所以在移动端也可以使用. 由于官方提供的版本是flash免费,html5 ...
- jquery.uploadify上传文件配置详解(asp.net mvc)
页面源码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- jQuery文件上传插件jQuery Upload File 有上传进度条
jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...
随机推荐
- Composer教程
介绍 PHP程序的包管理器 负责, 配置需要的项目, 项目需要的项目. 解决, 项目的依赖问题. 当前的PHP项目, 当作一个软件包去看待. 思路: 将软件集中在统一的软件源中. 安装 ...
- 破解NFC卡
目录 概念 各种卡 IC卡存储器结构 破解工具 破解NFC卡 概念 各种卡 ID卡 工作在低频(125Khz) ID卡 特点 EM4XX系列,多为EM4100/EM4102卡 常用的固化ID卡,出厂固 ...
- Mac下 VirtualBox(VBox) 的 Centos6/7 共享文件夹配置
vbox 安装虚拟机请移步这里. https://blog.csdn.net/a47846800/article/details/88847466 前期准备: 远程登录 centos 系统, 分边执行 ...
- jQuery 取值操作
模板使用: https://startbootstrap.com/themes/sb-admin-2/ 使用的 bootstrap 模块 ,上面的这个网站可以下载 select 取值 <sele ...
- C# 嵌入第三方EXE界面到panel中
C#可以通过windows API,将第三方程序嵌入到panel中,并且可以隐藏程序边框.问题:焦点在内部程序时,主窗口失去焦点:与内部EXE如何通讯? 代码如下: public partial cl ...
- SpringBoot入门-Redis(六)
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器功能简介---实时数据统计报表、视频文件上传、点播、分享、集成
熟悉EasyDSS流媒体服务器的小伙伴应该都知道,EasyDSS通过将EasyRTMP推流的直播流进行直播转码.智能处理.视频分发,再通过 CDN 分发节点分发到终端播放 SDK为观众播放高清低延时的 ...
- 【MongoDB学习之四】索引 聚合 备份与恢复 监控
环境 MongoDB 4.0 CentOS 6.5_x64 一.索引语法ensureIndex()方法基本语法格式如下所示:>db.COLLECTION_NAME.ensureIndex({KE ...
- Blazor 机制初探以及什么是前后端分离,还不赶紧上车?
标签: Blazor .Net 上一篇文章发了一个 BlazAdmin 的尝鲜版,这一次主要聊聊 Blazor 是如何做到用 C# 来写前端的,传送门:https://www.cnblogs.com/ ...
- DockerFile语法【h】
DockerFile在我理解就是可以将所需要构建镜像的功能.组件都天前配置好,然后直接生成一个Image,而不是先生成镜像,再通过修改容器的方法来生成最终需要的镜像. 镜像的定值实际上就是定值每一 ...