不用浏览器,直接用代码发送文件给webservices所在服务器 并且可以周期行的发送
- package com.toic.test;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.Date;
- import java.util.Timer;
- import java.util.TimerTask;
- public class FileUpload {
- /**
- * 发送请求
- *
- * @param url
- * 请求地址
- * @param filePath
- * 文件路径
- * @return
- * @throws IOException
- */
- public synchronized String send(String url, String filePath)
- throws IOException {
- File file = new File(filePath);
- if (!file.exists() || !file.isFile()) {
- return "ERROR";
- }
- /**
- * 第一部分
- */
- URL urlObj = new URL(url);
- HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
- /**
- * 设置关键值
- */
- con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式
- con.setDoInput(true);
- con.setDoOutput(true);
- con.setUseCaches(false); // post方式不能使用缓存
- // 设置请求头信息
- con.setRequestProperty("Connection", "Keep-Alive");
- con.setRequestProperty("Charset", "UTF-8");
- // 设置边界
- String BOUNDARY = "----------" + System.currentTimeMillis();
- con.setRequestProperty("Content-Type", "multipart/form-data; boundary="
- + BOUNDARY);
- // 请求正文信息
- // 第一部分:
- StringBuilder sb = new StringBuilder();
- sb.append("--"); // ////////必须多两道线
- sb.append(BOUNDARY);
- sb.append("\r\n");
- sb.append("Content-Disposition: form-data;name=\"file\";filename=\""+ file.getName() + "\"\r\n");
- sb.append("Content-Type:application/octet-stream\r\n\r\n");
- byte[] head = sb.toString().getBytes("utf-8");
- // 获得输出流
- OutputStream out = new DataOutputStream(con.getOutputStream());
- out.write(head);
- // 文件正文部分
- DataInputStream in = new DataInputStream(new FileInputStream(file));
- int bytes = ;
- byte[] bufferOut = new byte[];
- while ((bytes = in.read(bufferOut)) != -) {
- out.write(bufferOut, , bytes);
- }
- in.close();
- // 结尾部分
- byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
- out.write(foot);
- out.flush();
- out.close();
- /**
- * 读取服务器响应,必须读取,否则提交不成功
- */
- return " Upload | " + filePath + " | " + con.getResponseCode() + " | "+ con.getResponseMessage();
- /**
- * 下面的方式读取也是可以的
- */
- // try {
- // // 定义BufferedReader输入流来读取URL的响应
- // BufferedReader reader = new BufferedReader(new InputStreamReader(
- // con.getInputStream()));
- // String line = null;
- // while ((line = reader.readLine()) != null) {
- // System.out.println(line);
- // }
- // } catch (Exception e) {
- // System.out.println("发送POST请求出现异常!" + e);
- // e.printStackTrace();
- // }
- }
- static int counter=;
- //周期上传 知道达到指定条件
- public void timeVoid(){
- final Timer timer = new Timer();
- TimerTask tt=new TimerTask() {
- @Override
- public void run() {
- FileUpload up = new FileUpload();
- int j=;
- while(j<){
- try {
- System.out.println(up.send(
- "http://127.0.0.1:7001/RESTfull001/file/upload",
- "C:\\Documents and Settings\\yanxxx\\My Documents\\My Pictures\\Copy ("+(*counter+j)+") of xz.jpg"
- )
- );
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- j++;
- }
- counter++;
- System.out.println("counter--->"+counter);
- if(counter==){
- timer.cancel();
- System.out.println("到点啦!");
- }
- }
- };
- //执行tt 延时10s 每分钟执行1次
- timer.schedule(tt, ,**/);
- }
- // 在指定时间 周期执行 t.schedule(tt, dt, 60*1000); 每分钟执行一次
- public void atTimeSchedule(){
- Date dt=new Date();
- dt=new Date(dt.getYear(),dt.getMonth(),dt.getDay(),dt.getHours(),dt.getMinutes(),) ;
- Timer t=new Timer(false);
- TimerTask tt=new TimerTask(){
- @Override
- public void run() {
- //放任务的地方
- System.out.println(" exectue time: "+new Date());
- }};
- t.schedule(tt, dt, *);
- // t.scheduleAtFixedRate(tt, 1000, 60*1000); //带固定执行频率
- //t.scheduleAtFixedRate(tt, dt, 60*1000);//带固定执行频率
- }
- public static void main(String[] args) throws IOException {
- //不用浏览器,直接用代码发送文件给webservices所在服务器 并且可以周期行的发送
- FileUpload tTask=new FileUpload();
- // tTask.timeVoid();
- tTask.atTimeSchedule();
- }
- }
不用浏览器,直接用代码发送文件给webservices所在服务器 并且可以周期行的发送的更多相关文章
- 浏览器上写代码,4核8G微软服务器免费用,Codespaces真香
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 一图胜千言 先上图,下面是欣宸在自己的iPad Pro ...
- scp复制发送文件夹到其他服务器上
简述scp: scp是secure copy的简写,是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 写法: scp [可选参数] 登录名@地址:源路径 目标路径. 举例:scp -r ...
- C#使用FileSystemWatcher来监控指定文件夹,并使用TCP/IP协议通过Socket发送到另外指定文件夹
项目需求: 局域网内有两台电脑,电脑A(Windows系统)主要是负责接收一些文件(远程桌面粘贴.FTP上传.文件夹共享等方式),希望能在A接收文件后自动传输到电脑B(Windows系统)来做一个备份 ...
- [转]C#网络编程(订立协议和发送文件) - Part.4
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
要求: 实现多个客户端发送文件给一个服务器端 提示:多个人创建客户端发送文件,服务端循环接收socket,从socket中获取文件 说明:这里我们只要建立一个服务端就可以了,然后让多台电脑使用客户端给 ...
- C#网络编程(订立协议和发送文件) - Part.4
文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时, ...
- ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
在 Controller 中我们可以使用 FileResult 向客户端发送文件. FileResult FileResult 是一个抽象类,继承自 ActionResult.在 System.Web ...
- ASP.NET MVC:通过FileResult向浏览器发送文件
在 Controller 中我们可以使用 FileResult 向客户端发送文件. FileResult FileResult 是一个抽象类,继承自 ActionResult.在 System.Web ...
- ASP.NET MVC 向浏览器发送文件以提供文件下载功能
撑到大三了,结果发现周围的同学更加堕落了,尤其是某些人,表面上看起来很认真,实际上三天打鱼,两天晒网,结果一事无成,却还要抱怨学校教育失败. 为了吸取他们的教训,就算是一个小小的编码问题,我也要努力解 ...
随机推荐
- UVa 11849 - CD
题目:给你两个有序序列(每一个序列中元素不同),求两序列中都出现的元素个数. 分析:简单题. 合并排序合并过程. 设置两个指针.指向两序列当前元素.那个元素小指针向后移动.相同大则计数加一,同一时候后 ...
- ubuntu下安装RemixOS双系统(Android x86)
这篇文章主要讲在怎样在ubuntu下安装RemixOS pc版(Android x86版本号),下面两种做法的思路都适合安装不论什么版本号的Android x86版本号到ubuntu系统上,仅仅须要改 ...
- FragmentActivity+FragmentTabHost+Fragement替代TabActibvity+TabHost+Activity
自Android3.2之后,TabActibvity被弃用(Deprecated).取而代之的是FragmentActivity.由于Fragment比Activiy更灵活.消耗的资源更小.全然可以满 ...
- 5. webservice通信调用天气预报接口实例
转自:https://blog.csdn.net/xiejuan6105/article/details/78452605 一:环境搭建 1:新建一个java project工程weatherInf ...
- centos 7.3 配置vnc 服务 图形界面登录
1.检查系统是否有安装tigervnc-server软件包 rpm -qa |grep vnc 默认的系统未装tigervnc-server软件包 2.安装tigervnc-server软件包 yum ...
- Sqoop Import原理和详细流程讲解
Sqoop Import原理 Sqoop Import详细流程讲解 Sqoop在import时,需要指定split-by参数.Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域 ...
- Cisco交换机解决网络蠕虫病毒入侵问题
Cisco交换机解决网络蠕虫病毒入侵问题 今年来网络蠕虫泛滥给ISP和企业都造成了巨大损失,截至目前已发现近百万种病毒及木马.受感染的网络基础设施遭到破坏,以Sql Slammer为 ...
- Ionic2集成ArcGIS JavaScript API.md
1. Ionic同原生ArcGIS JavaScript API结合 1.1. 安装esri-loader 在工程目录下命令行安装: npm install angular2-esri-loader ...
- C++中全局变量的声明和定义
原文链接:http://blog.csdn.net/candyliuxj/article/details/7853938 (1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文 ...
- Oracle数据库IP访问限制(IP白名单黑名单)
1.编辑sqlnet.ora 内容为: #允许访问的IP(白名单) TCP.INVITED_NODES=(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使 ...