java执行linux命令的形式导出图片压缩包(后台导出,单线程运行)

RCE漏洞攻防:从命令注入到代码执行的原理、挖掘与防御实战 远程代码执行(RCE)是Web安全领域的高危漏洞,其核心在于应用程序错误地将用户输入的数据当作代码执行。从原理上看,主要分为命令执行和代码执行两类:命令执行通常源于应用程序将用户输入未经充分过滤便拼接至系统Shell命令中,通过分号、管道等元字符注入额外指令;代码执行则常因危险函数(如eval、exec)或反序列化机制,使得攻击者注入的编程语言代码片段被动态执行。这类漏洞的技术价值在于其极高的危害性,攻击者一旦利用成功,可直接控制服务器,进行数据窃取、植入后门等操作。在应用场景上,常见于网络设备管理、模板渲 阅读详情
 @GetMapping("exportTask")
    public @ResponseBody
    RestResult exportTask(String taskId) {
        Map<String, Object> hashMap = new HashMap<>();
        Task task = taskService.getById(taskId);
        //TODO 需要在这里知道最后用户的上传时间,如果最后时间小于生成时间,直接返回下载连接
        String time = taskUserService.getMaxCdt(taskId);
        Integer filestatus = task.getFilestatus();
        if (filestatus == null) {
            filestatus = 0;
        }
        //TODO 判断是有有正在生成的任务 状态有 0未生成 1进行中 2完成 3失败
        if (filestatus == 1) {
            return RestResult.Fail("任务正在生成,请稍后在试");
        }
        //TODO 判断文件已经生成并且为最新zip
        if (filestatus == 2 && StringUtils.isNotBlank(task.getFileurl()) && StringUtils.isNotBlank(task.getUpdatetime())) {
            //最后一次提交时间小于文件生成时间
            if (StringUtils.isNotBlank(task.getUpdatetime()) && DateUtil.compareTime(time, task.getUpdatetime())) {
                hashMap.put("url", task.getFileurl());
                return RestResult.OK(hashMap);
            }
        }
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                task.setFilestatus(1);
                taskService.updateById(task);
                String zipPath = UpLoadUtil.getPath() + "/task2021" + UpLoadUtil.getTIMEPath() + "/zip/" + taskId + "/";
                File file = new File(zipPath);
                if (!file.exists()) {
                    file.mkdirs();
                }
                String savePath = "/task2021" + UpLoadUtil.getTIMEPath() + "/zip/" + taskId + "/";
                //TODO 删除历史文件和压缩包
                if (StringUtils.isNotBlank(task.getFileurl())) {
                    try {
                        String command = "cd " + zipPath + " && rm -rf " + task.getFileurl();
                        System.out.println(command);
                        CommandUtil.exec(command);
                    } catch (Exception e) {
                        task.setFilestatus(3);
                        taskService.updateById(task);
                        e.printStackTrace();
                    }
                }
                //TODO 在数据库中查询所要导出的数据
                Map<String, List<TaskAnswer>> map = checkExportFiles(taskId);
                if (map.size() > 0) {
                    //生成要导出的文件夹
                    answerUserService.moveCopyFile(zipPath, map);
                    String fileName = task.getTitle() + ".zip";
                    System.out.println("文件名称 = " + fileName);
                    String command = "cd " + zipPath + " && zip -q -r " + fileName + " *";
                    System.out.println(command);
                    //TODO linux压缩命令执行
                    try {
                        CommandUtil.exec(command);
                        String url = savePath + fileName;
                        System.out.println("拼接文件下载链接 url=" + url);
                        if (StringUtils.isNotBlank(url)) {
                            task.setFileurl(url);
                            task.setUpdatetime(DateUtil.now());
                            task.setFilestatus(2);
                            taskService.updateById(task);
                        }
                    } catch (Exception e) {
                        task.setFilestatus(3);
                        taskService.updateById(task);
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.start();
        return RestResult.Fail("任务正在生成,请稍后在试");
    }
public class CommandUtil {

    public static void main(String[] args) {
//        try {
//            run("cd /Users/lyh/Documents/my/test/test && zip -q -r test2021.zip * & ");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
        exec("cd /Users/lyh/Documents/my/test/test && zip -q -r test202111.zip * ");
    }

    public static Object exec(String cmd) {
        try {
            String[] cmdA = {"/bin/sh", "-c", cmd};
            Process process = Runtime.getRuntime().exec(cmdA);
            LineNumberReader br = new LineNumberReader(new InputStreamReader(
                    process.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
                sb.append(line).append("\n");
            }
            return sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
Java环境变量——Windows和Linux配置jdk(保姆级教程,文字 + 图片指导) 本文我主要是介绍jdk的下载方式和在Windows系统下安装配置jdk11(压缩包格式),其他格式的jdk以及Linux操作系统上的jdk安装我后续视情况进行更新… 阅读详情

相关推荐

DAX Studio--导出PowerBi数据---(不使用复制表如何快速导出csv文件 / 如何导出百万级/千万级乃至亿级的数据量)多图预警!

多图预警! 1、打开Dax 点击Connect 2、在这里选择正在打开的PowerBi文件,点击Contect 3、选择导出方式--File F、输入指令(输入 EVALUATE ' )单引号可以进行快速提示 5、点击Run 6、选择文件路径,以及保存类型等(一般情况下,我们常用的类型是 txt 或者 第一种 UTF-8 的csv 文件),点击保存即可,稍等片刻,导出完成! 7、导出完成,我这里总计是39W 行的数据量,约20+ 秒完成 ...

STR_Liang的博客 8159

JAVA将html[动态]页面转成图片

近日项目上接到一个任务,设计并编写住院病案首页页面,然后将其转换成图片显示给医生查看。 天哪,住院病案内容那么多,光编写这个页面就已经够呛了,转图片我也没弄过,于是百度了一下,花了两天时间终于搞定,下面弄一个小案例讲解一下过程。 1、编写ftl页面 其实跟html页面一样,只不过html是静态的,而我们需要动态传参数过去,所以用到ftl文件 2、将参数传到ftl页面形成完整的页面,再获取ftl页面的内容,将其转化为静态html文件,再将html文件转为图片 3、获取ftl页面内容 其中

小强快跑~~ 4776

LSM6DS3TR-C IMU传感器入门:从MEMS原理到姿态解算实战

惯性测量单元(IMU)是现代智能设备实现运动感知的核心部件,其基础原理基于微机电系统(MEMS)技术。MEMS加速度计通过检测质量块在惯性力作用下的位移来测量线性加速度,而陀螺仪则利用科里奥利力效应感知角速度。这种技术使得微型化、低成本的6自由度运动测量成为可能,为机器人、无人机、可穿戴设备等提供了关键的空间姿态和运动状态信息。在实际工程中,开发者需要掌握I2C/SPI通信协议、传感器数据读取与校准,并通过互补滤波等算法融合加速度计和陀螺仪数据,实现稳定的姿态解算。LSM6DS3TR-C作为一款高性价比的6

weixin_28684655的博客 596

linux环境JAVA解压zip_Linux文件解压缩详解

tar命令我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包...

weixin_29159995的博客 2046

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

别再只仿真原理图了!用ADS做微带功分器,版图仿真这一步才是关键

本文深入探讨了使用ADS进行微带功分器设计时版图仿真的重要性,指出原理图仿真与版图仿真的本质差异及其对性能的影响。通过详细分析版图效应、关键设置和优化策略,帮助工程师避免常见陷阱,提升设计效率和准确性。文章特别强调了版图仿真在确保微波电路性能中的关键作用。

weixin_42561476的博客 413

Java在Linux下解析HTML文件生成图片的中文乱码问题

我使用的是Html2Image来解析HTML生成图片,在本地测试的时候,生成的图片没有问题,但放到Linux服务器之后,发现生成出来的图片中文会显示乱码。后来,查明原因,是因为Linux服务器中没有安装中文字体,后面通过安装好相应得中文字体就解决了这个中文乱码的问题了。 解决该中文乱码问题的步骤: 查看Linux下是否有中文字体 fc-list :lang=zh 若不支持fc-...

Cheng的博客 1626

告别Qt Creator?手把手教你用VSCode+MinGW调试QT项目(附完整launch.json配置)

本文详细介绍了如何在VSCode中配置完整的QT开发环境,特别是针对使用MinGW编译器的用户。从环境搭建到调试配置,包括生成.pro文件、Makefile,以及配置task.json和launch.json文件,帮助开发者高效调试QT项目。

weixin_27180827的博客 187

网页截图和svg模版动态生成图片Java实现

网页截图和svg模版动态生成图片Java实现 使用场景 需要Java语言动态生成图片 用流程图简单说明下我这边工作中使用的场景 仅供参考 所以这里就需要生成证书了 我先给大家看下最终实现的图片效果 这里要先说明一下 图片上的文字都是动态变化的即不同的订单对应的图片内容都不一样 图片上还可以嵌入图片哦 比如上图的logo图片 下面说下我是如何解决的 通过PhantomJS来实现 这种方式是不能实现这个需求的 这个的原理就是对网页截图 但只能对于静态页面截图 不能根据不同的参数值动态生成图片 所以不提倡

孟凡霄 1268

魔兽世界怀旧服宏命令全解析:从自动换装到智能判定,老玩家才知道的黑科技

本文全面解析魔兽世界怀旧服宏命令的高级应用,从自动换装到智能判定,揭秘老玩家专属的黑科技技巧。深入探讨怀旧服特有的宏命令机制,包括施法队列、装备切换系统和职业专属技巧,帮助玩家在经典旧世版本中提升战斗效率。

weixin_29230865的博客 732

软件测试高频面试题 2026 最新整理(功能 + 自动化)

本文系统整理了2026年软件测试面试高频题目及参考答案,涵盖功能测试、自动化测试及新兴热点领域。功能测试部分包含测试基础概念、用例设计方法、缺陷管理流程等10个必背题;自动化测试部分详细解析工具选择、元素定位、框架搭建等10个热门考点;新增章节聚焦AI测试、安全测试、性能指标等5个前沿话题。参考答案均采用结构化表述,包含定义、区别、适用场景等关键要素,并强调结合项目经验作答。文末提供2026版面试技巧,建议采用"结论-分点-总结"的回答逻辑,重点展现问题解决能力和技术前瞻性。

SmallBull的博客 1972

html如何转移java,如何在Java中将HTML转换为PDF

如何在Java中将HTML转换为PDFPDF是世界上最常用的文档格式有很多原因。一方面,它的兼容性水平无与伦比-可以在PC,Mac,Linux,Web浏览器和移动平台上以完美的保真度查看PDF,没有任何问题。除此之外,它的打印质量和不变性,在便利性方面,您显然是首选。现在转向转换问题,但是,您开始遇到一些问题。没有清晰简单的方法可以直接使用Java从HTML代码创建PDF。相反,必须首先执行整个解...

weixin_36013970的博客 192

线性代数 --- 置换矩阵 (Permutation matrix)

置换矩阵 - permutation matrix

松下J27录放机 3万+

Java导出zip压缩文件

这里需要说明的是我的项目需要各种不同文件导出,所以进行压缩,当项目上线的时候,我们是没有本地电脑路径的,所以压缩路径我选择在项目的根目录下,全部压缩成功,调用删除,在进行删除,这样在虚拟机上也可以进行操作,不会影响,个别注意,在linux上很多项目如果不配置中文环境,导出的文件名会乱码,强调一下,好了,看代码 /** * 附件导出 (导出所有用户上传的文件格式 已压缩包形式导出 )...

枫叶 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文件通过后台判断获取,图片以流的形式返给前端,zip下载包直接弹框下载(三)

没想到啊没想到,还有这么变态的需求功能,没想到还会再来记录个三,前两次写好了返给前端图片流了,这回呢,需求变成:是图片,进行登录权限校验,是压缩包zip,进行下载,是音频或者视频,不校验,直接以流的形式返给前端展示,改代码后,结果如下: 先说下,我这是在linux环境部署的项目运行。 package com.xxx.micro.safemanageexternal.controller; import com.xxx.micro.common.util.ResultUtil; import com.xxx

涵山韵海的博客 496

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

linux unzip命令_是时候学习Linux了

前言:Linux是一个开源、免费的操作系统。其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。如果你还不太了解Linux,希望本篇文章能够带你入门Linux。 1.Linux介绍及与Windows区别与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件。与 Windows 不同之处在于,Linux 是...

weixin_39583162的博客 128

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

gzp解压命令 linux_是时候学习Linux了

前言:Linux是一个开源、免费的操作系统。其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。如果你还不太了解Linux,希望本篇文章能够带你入门Linux。 1.Linux介绍及与Windows区别与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件。与 Windows 不同之处在于,Linux 是...

weixin_36332394的博客 171

硬核!高频Linux命令大总结,建议收藏~

点击上方蓝色“终端研发部”,选择“设为星标”学最好的别人,做最好的我们 ◆前 言记得不久前跟大家大分享了一波个人在平时日常工作、学习、开发、写文字、做视频等过程中,一些好用高效的在线工...

这个时代,作为程序员可能要学习小程序 453

Java 生成zip压缩文件

导出zip

菠萝不是凤梨 1788

Linux下安装jdk并配置环境变量

在linux上很多软件的正常运行都要依赖于java的开发工具包,简称jdk。但是安装linux的时候,一般默认都是没有安装jdk的。今天我们以CentOS/RHEL系列发行版为例,来教大家在linux上安装JDK。 工具/原料 jdk的rpm包 jdk的压缩包文件 jdk的yum源 ...

weixin_30828379的博客 180

linux中IGV的运行,[Linux] IGV使用说明

做完mapping之后,需要知道mapped reads在基因组上的分布,所以尝试在ubuntu系统中使用IGV软件,简单记录使用过程,如下:1.下载IGV软件去IGV官网: http://www.broadinstitute.org/software/igv/download,下载 binary distribution类型软件2.运行IGV软件软件下载后,直接解压。在命令行运行:sh IGV_...

weixin_39824801的博客 7500

Linux的Java的源码包路径_Linux源码包软件的安装与卸载

Linux软件安装与卸载(源码包形式):一般情况下linux程序的发布不能像windows那样,直接打包成一个setup.exe文件,然用户安装 时直接按下一步就完成了,因为它对库的依赖比较严重下面就来看下linux下软件源码包安装与卸载:Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随 意去掉或保留某些功...

weixin_30488835的博客 191

java linux excel_linux服务器上的java是怎么读写excel文件的?

首先呢,文件一般是指具有特定格式的一组数据,他们大致分为两种,可执行文件,和普通文件,可执行文件和系统关系密切,需要系统的某些特殊环境来进行执行,但是普通的数据文件就没有这种问题,他们不依赖于系统,就是具有某些结构和格式的一般数据而已,即使是二进制也不例外(实际上文件存储的最终形式都是二进制的)。如果我们了解他们的结构,就能够明白每一部分都在描述一些什么东西,就以Excel的新格式Xlsx举例,他...

weixin_35958479的博客 703

Redis系列之一:Linux环境下Redis安装(图文解说),2024年最新java的学习计划

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**[外链图片转存中…(img-FHTpOzpK-1712664333151)]

2401_83977626的博客 737

java 打开服务器excel文件_linux服务器上的java是怎么读写excel文件的?

首先呢,文件一般是指具有特定格式的一组数据,他们大致分为两种,可执行文件,和普通文件,可执行文件和系统关系密切,需要系统的某些特殊环境来进行执行,但是普通的数据文件就没有这种问题,他们不依赖于系统,就是具有某些结构和格式的一般数据而已,即使是二进制也不例外(实际上文件存储的最终形式都是二进制的)。如果我们了解他们的结构,就能够明白每一部分都在描述一些什么东西,就以Excel的新格式Xlsx举例,他...

weixin_42121086的博客 453
上一篇: 总结 nginx access.log 太大如何清理
下一篇: Javaswing图书信息管理平台
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值