//导入电话号码
public function postTel(){
set_time_limit(0);
ini_set('memory_limit','1024M'); $params = Input::all();
$add_data['admin_id'] = Auth::user()->id; //更新
if($params['id']){
if($this->service->updateOne($params)){
return ['success'=>1,'message'=>'更新成功'];
}else{
return ['success'=>0,'message'=>'更新成功'.$this->service->getError()];
} }else{
//新增
if($params['content'] == ''){
return ['success'=>0,'message'=>'添加失败,短信内容不能为空'];
} $file_path='';
$message=''; if($this->upload($file_path,$message,true)===false)
{
return ['success'=>0,'message'=>'添加失败'.$message];
}
$import_result=$this->qqImportExecute($file_path,$message); if($import_result===false)
{
return ['success'=>0,'message'=>'添加失败'.$message];
} $params['mobile'] = $import_result;
if($this->service->addOne($params)){
return ['success'=>1,'message'=>'新增成功'];
}else{
return ['success'=>0,'message'=>'添加失败'.$this->service->getError()];
} } }
private function upload(&$file_path,&$message,$rand)
{ $upload_path='sms/imports';
$file_max_size=1024 * 1024*50; //文件最大
$file_types=array('xls','xlsx','csv'); if(count($_FILES)==0 || $_FILES['import']['size'] ==0)
{
$message="电话号码不能为空";
return false;
}
$files=array_values($_FILES); $up_file=$files[0];
$file_size=$up_file['size'];
if($file_size>$file_max_size)
{
$message='你上传的文件过大,最大为:' . $file_max_size/1024/1024 . 'MB';
return false;
} $up_filename=$up_file['name'];
$filename_arr=explode('.', $up_filename);
$file_ext=array_pop($filename_arr);
if(!in_array($file_ext,$file_types))
{
$message='你上传的文件类型不对!目前只支持'. implode(',', $file_types);;
return false;
}
//创建导入根目录
$upload_path=storage_path($upload_path);
if(!is_dir($upload_path) && !@mkdir($upload_path, 0777, true))
{
$message='上传配置路径配置不对!';
return false;
}
$tmp_name=$up_file['tmp_name'];
if($rand){
list($file_name,$file_ext) = explode('.', $files[0]['name']) ;
if($file_ext=='xlsx'){
$file_ext = 'xls';
}
$filename= md5($file_name).'.'.$file_ext;
$file_path=$upload_path. '/' . $filename;
}else{
$filename=date('YmdHis',time()). rand(10, 99) .'.' . $file_ext;
$file_path=$upload_path. '/' . $filename;
} if(!move_uploaded_file($tmp_name,$file_path)){
$message='上传文件失败!'; return false;
}
return true;
} private function qqImportExecute($file_path,&$message)
{
set_time_limit(0);
ini_set('memory_limit','1024M');
if(!file_exists($file_path))
{
$message="文件找不到!";
return false;
}
//获取表中的数据 $rows = $this->Excelfile_to_row_Array($file_path,0); if(count($rows)==0)
{
$message="没有可操作的数据。";
return false;
} if($rows){
$data = [];
foreach($rows as $key=>$val){
if(!$val[0]){
continue;
}
if(preg_match("/^1\d{10}$/",trim($val[0]))){
$data[] = $val[0];
} } return $data;
}
return true; } public function Excelfile_to_row_Array($file_path,$sheet_site=0){//将文件转换成数组 $objPHPExcel = Excel::load($file_path); $sheets = $objPHPExcel->getALLSheets(); $countSheets = count($sheets);
$sheetsinfo = array();
$sheetData = array(); $sheet = $sheets[$sheet_site];
$row_count=$sheet->getHighestRow(); if($row_count<=1)
{
$message="上传的excel格式不对,或没数据";
return false;
}
$sheetsinfo["rows"] = $sheet->getHighestRow(); $sheetsinfo["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); for($row=1;$row<=$sheetsinfo["rows"];$row++){
for($col=0;$col<$sheetsinfo["column"];$col++){
$sheetData[$row][$col] = trim($sheet->getCellByColumnAndRow($col,$row)->getValue(),'=');
}
} return $sheetData; }

laravel 实现上传 excel的更多相关文章

  1. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  2. SMW0上传EXCEL模板时报错无分配给对象***的MIME类型

    在使用SMW0上传照片.声音文件.EXCEL模板等文件时,遇到报错提示,如下图所示: 解决办法:需要先维护 .XLS 文件的MIME TYPE,SMW0 打开如下图所示 选择上图红色框中“WebRFC ...

  3. Uploadify上传Excel到数据库

    前两章简单的介绍了Uploadify上传插件的基本使用和相关的属性说明.这一章结合Uploadify+ssh框架+jquery实现Excel上传并保存到数据库.         以前写的这篇文章 Jq ...

  4. SpringMVc上传excel或csv文件

    1.JSP页面代码 <form enctype=""multipart/form-data" method="post"> <inp ...

  5. 使用ocupload和POI一键上传Excel并解析导入数据库

    使用的工具如下:  JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...

  6. java上传excel到后台解析入库

    背景:最近需要做一个excel模板导入的功能,以便用户可以自己增删改查数据,当然,只有特别的用户才能有此权限,捋了捋思路,还是从前端写起 实现: 页面最后的效果如下,可以自己修改,删除,导入导出数据, ...

  7. laravel 文件上传

    laravel 文件上传 先开扩展 表单中能够选择图片 数据处理C层, 接图片并保存 保存图片: 设置目录 store()的第一个参数说明: 存放图片的子目录. 如何获取文件的类型 大小: $uplo ...

  8. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  9. SpringBoot(十三)_springboot上传Excel并读取excel中的数据

    今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...

随机推荐

  1. xml 的读写

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 写了placement new就要写placement delete

    "placement new"通常是专指指定了位置的new(std::size_t size, void *mem),用于vector申请capacity剩余的可用内存. 但广义的 ...

  3. 夺命雷公狗-----React---24--小案例之react经典案例todos(单条任务的删除)

    我们的组建分析图 我们组建需要的是删除,数据流方式如下所示: 为了更方便下一步操作,先写个函数他 然后在Ul组建里面对她进行处理 然后在Zong组建里对数据进行处理,如下所示: 但是悲剧的一幕出现了, ...

  4. URL跳转的几种方式

    1.HTML: ①. <head> <!-- 以下方式只是刷新不跳转到其他页面 --> <meta http-equiv="refresh" cont ...

  5. C#获取EF实体对象或自定义属性类的字段名称和值

    在年前上班的时候遇到了一个问题是这样描述的:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的值,将该修改前的值.修改后的值,该值对应的字段,该值对应的行id获取到保存到数据库的某张表里.现 ...

  6. CEGUI0.8.4引入到自己工程中

    首先要确定你的CEGUI已经完全编译好,若未进行这一步请参照http://www.cnblogs.com/wenguang1996/p/5027522.html 打开VS2012新建C++工程,然后添 ...

  7. maven nexus 私服的搭建学习

    之前对maven有过初步的了解与认识,自己也创建过项目使用其来管理,但都是非常粗浅的操作,今天在高人的指点下,也学着在自己的电脑上搭建一个maven私服,虽然技术难度也不高,但为了更深层次的提高,这些 ...

  8. python 学习

    python 使用 缩进 代替 C 中的 {}  或 delphi 中的 begin...end 1.help()  显示帮助或 help(<命令>) 2.字符串前加 r 表示原始字符串, ...

  9. eclipse中配置maven

    http://jingyan.baidu.com/article/db55b609a994114ba20a2f56.html

  10. [OSG]OpenSceneGraph FAQ 以及OSG资源

    1.地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗? 答:计算一个空间点的屏幕坐标,使用osgAPEx::GetScreenPosition函数.当空间点处于相机视空间内(不管它是 ...