使用curl上传文件至服务器的 java servlet简单实现

需求:

为了同步数据,需要将数据文件,也就是前几篇中生成的sql文件上传至服务器并执行。这里在服务端简单写了个文件上传接口,客户端调用curl来上传文件,上传完毕后,也使用curl发出一个指令,在服务端执行一个bat文件,将数据导入到服务端的数据中。在客户端定时执行这些curl命令,达到本地和远端数据库的同步。

一、servlet代码

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");response.setCharacterEncoding("UTF-8");response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);PrintWriter out = response.getWriter();String fileName = "";try {if (ServletFileUpload.isMultipartContent(request)) {DiskFileItemFactory dff = new DiskFileItemFactory();// 创建该对象ServletFileUpload sfu = new ServletFileUpload(dff);// 创建该对象sfu.setHeaderEncoding("utf-8");dff.setSizeThreshold(1024000);// 指定在内存中缓存数据大小,单位为bytesfu.setFileSizeMax(5000000);// 指定单个上传文件的最大尺寸FileItemIterator fii = sfu.getItemIterator(request);// 解析request请求,并返回FileItemIterator集合while (fii.hasNext()) {FileItemStream fis = fii.next();// 从集合中获得一个文件流if (fis.isFormField() ) {//获得普通form的值String fieldName = fis.getFieldName().trim();if(fieldName.equals("runNow")){//执行批处理文件String strcmd="cmd /c start  D:\\test.bat";Runtime rt = Runtime.getRuntime();Process ps = null;ps = rt.exec(strcmd);ps.waitFor();int i = ps.exitValue();if (i == 0) {System.out.println("执行完成.") ;}else{System.out.println("执行失败.") ;}ps.destroy();ps = null;}}else{fileName = fis.getName().substring(fis.getName().lastIndexOf("\\")+1);BufferedInputStream inStream = new BufferedInputStream(fis.openStream());// 获得文件输入流BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File("c:\\"+fileName)));// 获得文件输出流Streams.copy(inStream, outStream, true);// 开始把文件写到你指定的上传文件夹}}}out.println("File upload successfully!!! -LY");// 终于成功了,} catch (Exception e) {e.printStackTrace();}out.flush();out.close();}

二、curl调用命令

#上传文件,请注意那个@一定要有
curl -v -F upload=@c:\file001.sql http://127.0.0.1:8080/LIMS2/servlet/UploadFile
curl -v -F upload=@c:\file002.sql http://127.0.0.1:8080/LIMS2/servlet/UploadFile
curl -v -F upload=@c:\file003.sql http://127.0.0.1:8080/LIMS2/servlet/UploadFile
curl -v -F upload=@c:\file004.sql http://127.0.0.1:8080/LIMS2/servlet/UploadFile
。。。。。。
#让服务端执行
curl -F runNow=1 http://127.0.0.1:8080/LIMS2/servlet/UploadFile

后记:

本方法适用于定时上传文件至服务器进行一些同步、更新、维护操作。

初期使用了wget上传,但是总是不成功,主要是在MultipartContent方面的参数总是不正确,使用curl以后直接解决了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/628921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 指针的安全问题

指针是一个强大的工具,但它们可能导致多种安全问题。接下来我们一起研究一下会出现的安全问题。欢迎大家补充说明!!! 悬挂指针(也称为悬空指针或迷途指针) 是指向一块已经释放或无效内存的指针。悬挂指针…

Chrome 浏览器 Manifest V3 版本中 scripting API 解析

Chrome 浏览器 Manifest V3 版本中 scripting API 解析 chrome.scripting 使用 chrome.scripting API 在不同上下文中执行脚本。 可以使用 chrome.scripting API 将 JavaScript 和 CSS 注入网站。 一、所需权限 scripting 二、Manifest 配置 使用 chrome.scripting API&…

DC电源模块与AC电源模块的对比分析

DC电源模块与AC电源模块的对比分析 BOSHIDA DC电源模块和AC电源模块是两种常见的电源模块,它们在供电方式、稳定性、适用范围等方面有所不同,下面是它们的对比分析: 1. 供电方式: DC电源模块通过直流电源供电,通常使用…

【Linux】Linux 系统编程——which 命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 which 命令用于定位执行文件的路径。当输入一个命令时,which 会在环境变量 PATH 所指定的路径中搜索每个目录,以查找指定的可执行文件。 2.命令格式 which [选项] 命令名3.常…

美易投资:在经济不确定性中寻求避风港:美股投资者转向高质量股

随着美国经济衰退的阴云逐渐笼罩,市场的不确定性增加,投资者开始寻找更为稳健的投资策略。在这种背景下,高质量股票成为了市场的新宠。这些股票通常具备稳定的财务状况、低债务水平和充裕的现金储备,使它们在经济放缓时期能够展现…

生产力与生产关系 —— 浅析爱泼斯坦事件 之 弱电控制强电原理

据网络文字与视频资料,爱泼斯坦事件是犹太精英阶层,为了掌控美国国家机器为犹太利益集团服务,而精心设下的一个局。本文先假设这个结论成立,并基于此展开讨论。 我们知道,弱电管理强电是电气工程中的一门专门学问&…

Mysql 数据库DDL 数据定义语言——数据库,数据表的创建

DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)—Database Definition Language 1、登录数据库,输入用户名和密码 mysql -ufdd -p990107Wjl2、查看数据库 show databases;3、创建一个…

MySQL面试题 | 12.精选MySQL面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

什么情况下物理服务器会运行出错?

​  物理服务器,也称为裸机服务器,一般可以提供高性能计算水平和巨大的存储容量。然而,它们也难免会遇到一些问题。运行出错时,可能会导致停机和数据丢失。在这篇文章中,介绍了常见的物理服务器在一些情况下显示出错…

【白话机器学习的数学】读书笔记(2)学习回归

二、学习回归 1. y y y与 f θ ( x ) f_\theta(x) fθ​(x) y y y 是实际数据x对应的值 f θ ( x ) f_\theta(x) fθ​(x)是我们构造出来的函数,例如 f θ ( x ) θ 0 θ 1 x f_\theta(x) \theta_0 \theta_1 x fθ​(x)θ0​θ1​x 所以我们希望这两个越接近&…

【视觉SLAM十四讲学习笔记】第五讲——相机模型

专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角 【视觉SLAM十四讲学习笔记】第三讲——四元…

苹果MAC怎么清理内存?苹果MAC清理内存的方法

很多使用苹果电脑的用户都喜欢在同时运行多个软件,不过这样会导致在运行一些大型软件的时候出现不必要的卡顿现象,这时候我们就可以去清理下内存,不过很多人可能并不知道正确的清内存方式,下面就和小编一起来看看吧。 苹果MAC清理…

Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect

如果你想在一个脚本中同时使用bash和expect,你可以将expect部分嵌入到bash脚本中。以下是一个示例: #!/bin/bash# 设置MySQL服务器地址、端口、用户名和密码 MYSQL_HOST"localhost" MYSQL_PORT"3306" MYSQL_USER"your_usernam…

Maven 依赖传递和冲突、继承和聚合

一、依赖传递和冲突 1.1 Maven 依赖传递特性 1.1.1 概念 假如有三个 Maven 项目 A、B 和 C,其中项目 A 依赖 B,项目 B 依赖 C。那么我们可以说 A 依赖 C。也就是说,依赖的关系为:A—>B—>C, 那么我们执行项目 …

PDF有编辑密码怎么办

目录 注意: windows方法: 1 python 下载 2 打开命令行 3 安装 pikepdf 4 编写python脚本 5 使用py脚本 6解密完成 Linux方法: 注意: 此方法可以用于破解PDF的编辑密码,而不是PDF的打开密码 当遇到类似如下问…

MySQL语句 | 在MySQL中解析JSON或将表中字段值合并为JSON

MySQL提供了一系列的JSON函数来处理JSON数据,包括从JSON字符串中提取值和将表中字段值合并为JSON等。 在MySQL中解析JSON 可使用JSON_EXTRACT函数提取JSON字符串中指定字段的值,使用JSON_UNQUOTE函数去除提取的字符串值周围的引号,以得到原…

openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c

文章目录 openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c概述笔记END openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c 概述 用RSA私钥签名 d2i_PrivateKey_ex()可以从内存载入私钥数据, 得到私钥EVP_PKEY* 从私钥产生ctx, 对ctx进行签名初始化, 设置…

mavavi显示 3d姿态

目录 mayavi安装: mavavi显示 3d姿态 mayavi安装: 第1步 从这里下载两个whl文件, https://www.lfd.uci.edu/~gohlke/pythonlibs/ * mayavi:*xxx.whl * vtk: VTK‑9.1.0‑cp310‑cp310‑win_amd64.whl 第2步 pip install py…

linux-挂载Samba共享

linux-挂载Samba共享 1、linux服务器启动Samba共享服务 2、客户端电脑安装cifs-utils dnf install cifs-utils # 或 yum install cifs-utils3、挂载共享目录 # 创建挂目录 mkdir /share # 使用mount命令挂在共享目录,-t协议类型 -o用户名密码 共享目录访问地址 挂…

无监督学习 - 均值聚类(K-Means Clustering)

什么是机器学习 K-Means聚类是一种无监督学习算法,用于将数据集分成K个不同的组(簇),每个组内的数据点与组内其他点的相似度较高,而与其他组内的点相似度较低。这是通过迭代地调整簇中心和将数据点分配到最近的簇来实…