//导入电话号码
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. HDU 1880 魔咒词典(字符串哈希)

    题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...

  2. SpringMVC 温故而知新

    http://www.cnblogs.com/bigdataZJ/p/5815467.html直接引用别人的吧,没时间呀

  3. 启动Tomcat服务器报错

    启动Tomcat服务器报错: Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are alre ...

  4. Classic Shell 4.2.4 中文版已经发布

    新版本支持 windows 10 操作系统了.请点击本博客页面左上角的链接下载. 博主的电脑最近也升级到 Windows 10 操作系统,用了没几天就出现打不开“开始”菜单.Edge.计算器等 App ...

  5. 从JAVA看C#中volatile和synchronized关键字的作用

    最近一直在想C#中 volatile关键字到底是用来干什么的?查了很多.NET的文章都是说用volatile修饰的变量可以让多线程同时修改,这是什么鬼... 然后查到了下面这篇JAVA中关于volat ...

  6. 【实践】js实现随机不重复抽取数组中元素

    经过3个星期的时间终于用做完了学校的练习作品了,但是发现在用jq 做互动虽然很方便但却带来了不少的烦恼 所以在以后的日子里我要好好学 js 了! 然后呢在博主之前学java 里面 另我最头痛的就是做产 ...

  7. Core Data 使用映射模型

    Core Data 使用映射模型 如果新版本的模型存在较复杂的更改,可以创建一个映射模型,通过该模型指定源模型如何映射到目标模型. 创建映射模型,新建File,  Core Data 选择Mappin ...

  8. s3c2440 上txt 小说阅读器

    文件结构 Makefile: CROSSCOMPILE := arm-linux- CFLAGS := -Wall -O2 -c LDFLAGS := -lm -lfreetype CC := $(C ...

  9. Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序

        在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的.     这次,我们来看看在窗体上修改或录入数据的情 ...

  10. Kafka 0.9+Zookeeper3.4.6集群搭建、配置,新Client API的使用要点,高可用性测试,以及各种坑 (转载)

    Kafka 0.9版本对java client的api做出了较大调整,本文主要总结了Kafka 0.9在集群搭建.高可用性.新API方面的相关过程和细节,以及本人在安装调试过程中踩出的各种坑. 关于K ...