laravel 实现上传 excel
//导入电话号码
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的更多相关文章
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- SMW0上传EXCEL模板时报错无分配给对象***的MIME类型
在使用SMW0上传照片.声音文件.EXCEL模板等文件时,遇到报错提示,如下图所示: 解决办法:需要先维护 .XLS 文件的MIME TYPE,SMW0 打开如下图所示 选择上图红色框中“WebRFC ...
- Uploadify上传Excel到数据库
前两章简单的介绍了Uploadify上传插件的基本使用和相关的属性说明.这一章结合Uploadify+ssh框架+jquery实现Excel上传并保存到数据库. 以前写的这篇文章 Jq ...
- SpringMVc上传excel或csv文件
1.JSP页面代码 <form enctype=""multipart/form-data" method="post"> <inp ...
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
- java上传excel到后台解析入库
背景:最近需要做一个excel模板导入的功能,以便用户可以自己增删改查数据,当然,只有特别的用户才能有此权限,捋了捋思路,还是从前端写起 实现: 页面最后的效果如下,可以自己修改,删除,导入导出数据, ...
- laravel 文件上传
laravel 文件上传 先开扩展 表单中能够选择图片 数据处理C层, 接图片并保存 保存图片: 设置目录 store()的第一个参数说明: 存放图片的子目录. 如何获取文件的类型 大小: $uplo ...
- 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的路由方案,与原来的方案在使用上差别不 ...
- SpringBoot(十三)_springboot上传Excel并读取excel中的数据
今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...
随机推荐
- HDU 1880 魔咒词典(字符串哈希)
题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...
- SpringMVC 温故而知新
http://www.cnblogs.com/bigdataZJ/p/5815467.html直接引用别人的吧,没时间呀
- 启动Tomcat服务器报错
启动Tomcat服务器报错: Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are alre ...
- Classic Shell 4.2.4 中文版已经发布
新版本支持 windows 10 操作系统了.请点击本博客页面左上角的链接下载. 博主的电脑最近也升级到 Windows 10 操作系统,用了没几天就出现打不开“开始”菜单.Edge.计算器等 App ...
- 从JAVA看C#中volatile和synchronized关键字的作用
最近一直在想C#中 volatile关键字到底是用来干什么的?查了很多.NET的文章都是说用volatile修饰的变量可以让多线程同时修改,这是什么鬼... 然后查到了下面这篇JAVA中关于volat ...
- 【实践】js实现随机不重复抽取数组中元素
经过3个星期的时间终于用做完了学校的练习作品了,但是发现在用jq 做互动虽然很方便但却带来了不少的烦恼 所以在以后的日子里我要好好学 js 了! 然后呢在博主之前学java 里面 另我最头痛的就是做产 ...
- Core Data 使用映射模型
Core Data 使用映射模型 如果新版本的模型存在较复杂的更改,可以创建一个映射模型,通过该模型指定源模型如何映射到目标模型. 创建映射模型,新建File, Core Data 选择Mappin ...
- s3c2440 上txt 小说阅读器
文件结构 Makefile: CROSSCOMPILE := arm-linux- CFLAGS := -Wall -O2 -c LDFLAGS := -lm -lfreetype CC := $(C ...
- Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序
在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的. 这次,我们来看看在窗体上修改或录入数据的情 ...
- Kafka 0.9+Zookeeper3.4.6集群搭建、配置,新Client API的使用要点,高可用性测试,以及各种坑 (转载)
Kafka 0.9版本对java client的api做出了较大调整,本文主要总结了Kafka 0.9在集群搭建.高可用性.新API方面的相关过程和细节,以及本人在安装调试过程中踩出的各种坑. 关于K ...