excel文件上传与导入
2024-11-23 18:54:07
1.文件上传
//上传按钮隐藏
<style>
#fileid_auth_image7 {
position: absolute;
left: 0;
width: 100%;
height: 90px;
top: 80px;
opacity: 0
}
</style>
//上传按钮
<label><button type="button" class="btn yellow btn-sm" name="option" onclick="img()"> <i class="fa fa-html5"></i> {fc_lang('导入数据')}</button></label>
<input type="file" name="img7" id="fileid_auth_image7" class="ajax_file_upload7" accept=".csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel">
<input type="hidden" class="cover7 i_check" id="cover7"/>
2.上传图片的js
<script>
$("#fileid_auth_image7").change(function(){
var fileElementId = $(this).attr('id'); //input id
var name = $(this).attr('name');//input name
$.ajaxFileUpload({
url:'/index.php?s=member&c=api&m=ajax_upload&fname='+name,
secureuri:false,
fileElementId:fileElementId,
dataType: 'json',
success: function (data) {
if(data.code == 0){
alert(data.msg);
}else{
$(".cover7").attr('value',data.id);
//提交数据
$.get('index.php?c=diy&m=import_excel&id='+data.id);
alert('导入成功');
setTimeout('window.location.href = "/admin.php?s=mall&c=home&m=index"', 2000);
}
},
error: function (data, status, e){
$("#"+fileElementId).attr('value',data.id);
//img.attr('src',data.url);
console.log(data);
$("#dr_row_auth_image7").attr('src',data.url);
}
});
})
function img (){
$("#fileid_auth_image7").click();
};
</script>
3.上传的接口
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Api extends M_Controller {
// ajax 图片上传
public function ajax_upload() {
// 游客不允许上传
!$this->member && exit(json_encode(array('code'=>0, 'msg'=>fc_lang('游客不允许上传附件'), 'url'=> '', 'id'=>'')));
// 会员组权限
$member_rule = $this->get_cache('member', 'setting', 'permission', $this->member['mark']);
// 是否允许上传附件
!$this->member['adminid'] && !$member_rule['is_upload'] && exit(json_encode(array('code'=>0, 'msg'=>fc_lang('您的会员组无权上传附件'), 'url'=> '', 'id'=>'')));
// 附件总大小判断
if (!$this->member['adminid'] && $member_rule['attachsize']) {
$data = $this->db->select_sum('filesize')->where('uid', $this->uid)->get('attachment')->row_array();
$filesize = (int)$data['filesize'];
$filesize > $member_rule['attachsize'] * 1024 * 1024 && exit(json_encode(array('code'=>0, 'msg'=>fc_lang('附件空间不足!您的附件总空间%s,现有附件%s。', $member_rule['attachsize'].'MB', dr_format_file_size($filesize)), 'url'=> '', 'id'=>'')));
}
$ext = 'jpg,jpeg,gif,png,csv';
$site = (int)$this->input->get('siteid');
$site = $site ? $site : SITE_ID;
$code = str_replace(' ', '+', $this->input->get('code'));
list($size, $path) = explode('|', dr_authcode($code, 'DECODE'));
$path = $path ? SYS_UPLOAD_PATH.'/'.$path.'/' : SYS_UPLOAD_PATH.'/'.date('Ym', SYS_TIME).'/';
!is_dir($path) && dr_mkdirs($path);
$this->load->library('upload', array(
'max_size' => (int)$size * 1024,
'overwrite' => FALSE,
'file_name' => substr(md5(time()), rand(0, 20), 10),
'upload_path' => $path,
'allowed_types' => str_replace(',', '|', $ext),
'file_ext_tolower' => TRUE,
));
if ($this->upload->do_upload(isset($_GET['fname']) ? $_GET['fname'] : 'Filedata')) {
$info = $this->upload->data();
$this->load->model('attachment_model');
$this->attachment_model->siteid = $site;
$result = $this->attachment_model->upload($this->uid, $info);
!is_array($result) && exit('0,'.$result);
list($id, $file, $_ext) = $result;
echo json_encode(array('code'=>1, 'msg'=>'', 'name' => dr_strcut($info['filename'], 15).'.'.$_ext, 'id'=>$id, 'url' => dr_get_file($id)));exit;
} else {
echo json_encode(array('code'=>0, 'msg'=>$this->upload->display_errors('', ''), 'url'=> '', 'id'=>''));exit;
}
}
}
4.excel导入功能
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
/* v3.1.0 */
class Diy extends M_Controller {
//导入功能
public function import_excel($id){
$id = $this->input->get('id');
$file_name = dr_get_file($id);
$f = fopen($file_name, 'r');
$columns = fgetcsv($f);
while ($row = fgetcsv($f)) {
$row = array_combine($columns, $row);
$data = [
'title' => trim(iconv('gb2312','utf-8',$row['title'])),
'thumb' => '',
'keywords'=>'',
'description'=>'',
'hits'=>'',
'uid'=>1,
'author' => 'mutaoinc',
'status'=>'9',
'url'=>'',
'link_id'=>'',
'tableid'=>'',
'inputip'=>$this->input->ip_address(),
'inputtime'=>SYS_TIME,
'updatetime'=>SYS_TIME,
'comments'=>'',
'favorites' => 0,
'displayorder' => 0,
'order_price'=>trim(iconv('gb2312','utf-8',$row['order_price'])),
'order_quantity'=>trim(iconv('gb2312','utf-8',$row['order_quantity'])),
'order_volume'=>trim(iconv('gb2312','utf-8',$row['order_volume'])),
'order_specification'=>'',
'order_shipping'=>'',
'order_shipping_param'=>'',
'order_city'=>'',
'order_status'=>'',
'order_sn'=>trim(iconv('gb2312','utf-8',$row['order_sn'])),
'cpbh'=>trim(iconv('gb2312','utf-8',$row['cpbh'])),
'biaozhunzhi'=>trim(iconv('gb2312','utf-8',$row['biaozhunzhi'])),
'cashao'=>trim(iconv('gb2312','utf-8',$row['cashao'])),
'guige'=>trim(iconv('gb2312','utf-8',$row['guige'])),
'huoqi'=>trim(iconv('gb2312','utf-8',$row['huoqi'])),
'youxiaoqi'=>trim(iconv('gb2312','utf-8',strtotime($row['youxiaoqi']))),
'yanzhidanwei'=>trim(iconv('gb2312','utf-8',$row['yanzhidanwei'])),
'biaozhunjia'=>trim(iconv('gb2312','utf-8',$row['biaozhunjia'])),
'zhuanshujia'=>trim(iconv('gb2312','utf-8',$row['zhuanshujia'])),
'goods_ename'=>trim(iconv('gb2312','utf-8',$row['goods_ename'])),
'picihao'=>trim(iconv('gb2312','utf-8',$row['picihao'])),
'pinpai'=>trim(iconv('gb2312','utf-8',$row['pinpai'])),
'jinjia'=>trim(iconv('gb2312','utf-8',$row['jinjia'])),
'zhiliangnongdu'=>trim(iconv('gb2312','utf-8',$row['zhiliangnongdu']))
];
//执行插入数据
$insert_result = $this->db->insert('imt_1_mall', $data);
//更新url数据
$sql = "UPDATE imt_1_mall SET url = concat('/index.php?s=mall&c=show&id=',id)";
$update_result = $this->db->query($sql);
}
}
} 