https://github.com/Chumper/Zipper

github地址

composer require chumper/zipper


看到这个代表安装成功
代表路由

.
.
.
// package chumper/zipper
Route::get('zip', 'ZipController@index')->name('zip.index');
Route::post('zip/download', 'ZipController@download')->name('zip.download');
Route::post('zip/upload', 'ZipController@upload')->name('zip.upload');

创建一个控制器

php artisan make:controller ZipController


这个文件带有过滤功能 并且返回的是一个类.
列表所有日志文件#
app/Http/Controllers/ZipController.php

<?phpnamespace App\Http\Controllers;use File;
use Illuminate\Http\Request;class ZipController extends Controller
{public function index(){$logs = File::files(storage_path('logs'));return view('zip', compact('logs'));}
}

创建视图文件:

touch resources/views/zip.blade.php


填入如下内容:
resources/views/zip.blade.php

@extends('layouts.app')@section('title', 'chumper/zipper 扩展示例')@section('content')<div class="row"><form class="form-inline pull-right" method="POST" action="{{ route('zip.upload') }}" enctype="multipart/form-data">{{ csrf_field() }}<div class="form-group"><input type="file" name="logs" style="width:170px" required></div><button type="submit" class="btn btn-default">导入</button></form><form method="POST" action="{{ route('zip.download') }}">{{ csrf_field() }}<button class="btn btn-default" type="submit">批量下载</button><table class="table table-striped"><thead><tr><th></th><th>文件名</th><th>创建时间</th><th>最后修改时间</th></tr></thead><tbody>@foreach($logs as $log)<tr><th scope="row"><input type="checkbox" name="logs[]" value="{{ $log->getBasename() }}"></th><td>{{ $log->getBasename() }}</td><td>{{ Date('Y-m-d H:i:s', $log->getCtime()) }}</td><td>{{ Date('Y-m-d H:i:s', $log->getMtime()) }}</td></tr>@endforeach</tbody></table></form>
</div>
@endsection


接下来先写一个dowon的方法

.
.
.
use Zipper;.
.
.public function download(Request $request){// 打包文件名$name = 'logs-'.time().'.zip';// 创建 zip 文件   folder是文件的目录$zipper = Zipper::make($name)->folder('logs');//循环用户勾选的文件  logsforeach($request->logs as $log) {// 检查提交的文件是否存在$path = storage_path('logs/'.basename($log));if (!File::exists($path)) {continue;}// 将文件加入 zip 包$zipper->add($path);}// 关闭zip,一定要调用$zipper->close();// 返回下载响应,下载完成后删除文件return response()->download(public_path($name))->deleteFileAfterSend(true);}
}


代表下载成功


接下来完成上传解压的功能

.
.
.public function upload(Request $request){if ($request->logs) {//加载上传的文件$zipper = Zipper::make($request->logs);// 可以使用 listFiles() 查看 zip 文件内容logger('zip file list:');logger($zipper->listFiles());//解压所有以.log结尾的文件$zipper->folder('logs')->extractMatchingRegex(storage_path('logs'), '/\.log$/');}//最终跳转回列表页面return redirect()->route('zip.index');}
.
.
.

准备测试文件


这里上传成功

laravel文件上传与下载相关推荐

  1. Angular 文件上传与下载

    Angular文件上传与下载 文件上传 方式1 使用NG ZORRO中的组件. 文件下载 方式1 直接下载 方式2 通过HTTP请求后端数据的方式进行下载 文件上传 方式1 使用NG ZORRO中的组 ...

  2. SpringBoot下文件上传与下载的实现

    原文:http://blog.csdn.net/colton_null/article/details/76696674 SpringBoot后台如何实现文件上传下载? 最近做的一个项目涉及到文件上传 ...

  3. Python实现阿里云aliyun服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 Python实现阿里云服务器里的文件上传与下载 背景: 正文: 预备环境: 构想: 实现: 注意: 结尾 018.4.15 背景: 老实说,因为现实的各 ...

  4. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  5. php从ftp下载文件到本地,php使用ftp实现文件上传与下载功能

    本文实例为大家分享了php ftp文件上传与下载的具体代码,供大家参考,具体内容如下 ftp文件上传 php自带有ftp操作的函数包,一个比较简单实现的ftp文件上传操作可以通过以下几个步骤来完成: ...

  6. 2014-07-23 利用ASP.NET自带控件实现单文件上传与下载

    效果图 上传文件页面: 下载文件页面:   1.母版页site.Master <%@ Master Language="C#" AutoEventWireup="t ...

  7. PHP文件上传,下载,Sql工具类!

    PHP文件上传,下载,Sql工具类! 对文件大小,文件类型 同名覆盖 中文转码的操作,可直接使用 前台 upload.html <!DOCTYPE html> <html> & ...

  8. WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载

    MTOM消息优化传输机制主要应用于大量数据的传输,很多文章中也直接得出结论:使用MTOM文件传输效率高.为什么MTOM的数据传输效率会比别的方式要高?MTOM真的如此完美吗,它有什么不足?什么情况下使 ...

  9. [转载]ASP.NET Core文件上传与下载(多种上传方式)

    ASP.NET Core文件上传与下载(多种上传方式) 前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理 ...

  10. 科普|不同协议下远程服务器文件上传_下载优劣对比

    作为一个程序员,如果不知道如何进行远程服务器的文件上传与下载,实在是一件尴尬的事情.打开百度,搜索「远程服务器 上传下载」,你能得到 63,100,000 个搜搜结果,五花八门的操作方式的让人眼花缭乱 ...

最新文章

  1. NLP入门之路及学习方法:从任务实践入手!
  2. Quartz2D简单绘制之不规则形状
  3. java并发中的延迟初始化
  4. 数据产品经理进阶之路
  5. -moz火狐 (firefox)CSS
  6. 容器编排技术 -- Kubernetes kubectl annotate 命令详解
  7. postgre 生成数据库html文档_还在手动整理数据库文档?试试这个工具
  8. [转]Flex 中的皮肤
  9. 【渝粤题库】陕西师范大学200061语言学概论作业(高起本、专升本)
  10. 51单片机自学笔记(一)——keil软件的使用
  11. bat实现黑客流星雨BAT_bat黑客帝国
  12. 4.8 HD-GR GNSS导航软件源码
  13. 奥运门票系统down机的技术问题
  14. vue动态style设置背景图片
  15. 保利威视sdk与腾讯bugly 冲突解决方案
  16. 软件开发项目风险管理的几点体会
  17. 常用AF对焦算法详解
  18. Mysql 备份工具XtraBackup增量备份
  19. 《小白兔到大黑牛》第十一篇yum命令的总结
  20. 如何获取汉字对应的拼音

热门文章

  1. 单片机入门教程:第一章 单片机8051概述
  2. 生意参谋高阶指数换算api、指数换算api、生意参谋交易指数换算api、生意参谋数据查询api
  3. Python中更新pip版本的那些事
  4. HTML生日快乐代码
  5. ubuntu搭建SVN客户端,右击提交或更新
  6. 代码检查工具--findBugs
  7. 大数据离线分析之企业实战分享
  8. 基于Qt开发的游戏手柄小程序例子
  9. word在线预览 (含doc,docx等)
  10. 使用PyTorch搭建ResNet101、ResNet152网络