1. package com.toic.test;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.DataOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.IOException;
  8. import java.io.OutputStream;
  9. import java.net.HttpURLConnection;
  10. import java.net.URL;
  11. import java.util.Date;
  12. import java.util.Timer;
  13. import java.util.TimerTask;
  14.  
  15. public class FileUpload {
  16.  
  17. /**
  18. * 发送请求
  19. *
  20. * @param url
  21. * 请求地址
  22. * @param filePath
  23. * 文件路径
  24. * @return
  25. * @throws IOException
  26. */
  27. public synchronized String send(String url, String filePath)
  28. throws IOException {
  29.  
  30. File file = new File(filePath);
  31. if (!file.exists() || !file.isFile()) {
  32. return "ERROR";
  33. }
  34.  
  35. /**
  36. * 第一部分
  37. */
  38. URL urlObj = new URL(url);
  39. HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
  40.  
  41. /**
  42. * 设置关键值
  43. */
  44. con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式
  45. con.setDoInput(true);
  46. con.setDoOutput(true);
  47. con.setUseCaches(false); // post方式不能使用缓存
  48.  
  49. // 设置请求头信息
  50. con.setRequestProperty("Connection", "Keep-Alive");
  51. con.setRequestProperty("Charset", "UTF-8");
  52.  
  53. // 设置边界
  54. String BOUNDARY = "----------" + System.currentTimeMillis();
  55. con.setRequestProperty("Content-Type", "multipart/form-data; boundary="
  56. + BOUNDARY);
  57.  
  58. // 请求正文信息
  59.  
  60. // 第一部分:
  61. StringBuilder sb = new StringBuilder();
  62. sb.append("--"); // ////////必须多两道线
  63. sb.append(BOUNDARY);
  64. sb.append("\r\n");
  65. sb.append("Content-Disposition: form-data;name=\"file\";filename=\""+ file.getName() + "\"\r\n");
  66. sb.append("Content-Type:application/octet-stream\r\n\r\n");
  67.  
  68. byte[] head = sb.toString().getBytes("utf-8");
  69.  
  70. // 获得输出流
  71.  
  72. OutputStream out = new DataOutputStream(con.getOutputStream());
  73. out.write(head);
  74.  
  75. // 文件正文部分
  76. DataInputStream in = new DataInputStream(new FileInputStream(file));
  77. int bytes = ;
  78. byte[] bufferOut = new byte[];
  79. while ((bytes = in.read(bufferOut)) != -) {
  80. out.write(bufferOut, , bytes);
  81. }
  82. in.close();
  83.  
  84. // 结尾部分
  85. byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
  86.  
  87. out.write(foot);
  88.  
  89. out.flush();
  90. out.close();
  91.  
  92. /**
  93. * 读取服务器响应,必须读取,否则提交不成功
  94. */
  95.  
  96. return " Upload | " + filePath + " | " + con.getResponseCode() + " | "+ con.getResponseMessage();
  97.  
  98. /**
  99. * 下面的方式读取也是可以的
  100. */
  101.  
  102. // try {
  103. // // 定义BufferedReader输入流来读取URL的响应
  104. // BufferedReader reader = new BufferedReader(new InputStreamReader(
  105. // con.getInputStream()));
  106. // String line = null;
  107. // while ((line = reader.readLine()) != null) {
  108. // System.out.println(line);
  109. // }
  110. // } catch (Exception e) {
  111. // System.out.println("发送POST请求出现异常!" + e);
  112. // e.printStackTrace();
  113. // }
  114.  
  115. }
  116.  
  117. static int counter=;
  118.  
  119. //周期上传 知道达到指定条件
  120. public void timeVoid(){
  121.  
  122. final Timer timer = new Timer();
  123.  
  124. TimerTask tt=new TimerTask() {
  125. @Override
  126. public void run() {
  127.  
  128. FileUpload up = new FileUpload();
  129. int j=;
  130. while(j<){
  131.  
  132. try {
  133. System.out.println(up.send(
  134. "http://127.0.0.1:7001/RESTfull001/file/upload",
  135. "C:\\Documents and Settings\\yanxxx\\My Documents\\My Pictures\\Copy ("+(*counter+j)+") of xz.jpg"
  136. )
  137. );
  138. } catch (IOException e) {
  139. // TODO Auto-generated catch block
  140. e.printStackTrace();
  141. }
  142.  
  143. j++;
  144. }
  145.  
  146. counter++;
  147. System.out.println("counter--->"+counter);
  148.  
  149. if(counter==){
  150. timer.cancel();
  151. System.out.println("到点啦!");
  152. }
  153.  
  154. }
  155. };
  156. //执行tt 延时10s 每分钟执行1次
  157. timer.schedule(tt, ,**/);
  158. }
  159.  
  160. // 在指定时间 周期执行 t.schedule(tt, dt, 60*1000); 每分钟执行一次
  161. public void atTimeSchedule(){
  162. Date dt=new Date();
  163. dt=new Date(dt.getYear(),dt.getMonth(),dt.getDay(),dt.getHours(),dt.getMinutes(),) ;
  164.  
  165. Timer t=new Timer(false);
  166. TimerTask tt=new TimerTask(){
  167.  
  168. @Override
  169. public void run() {
  170.  
  171. //放任务的地方
  172. System.out.println(" exectue time: "+new Date());
  173.  
  174. }};
  175. t.schedule(tt, dt, *);
  176. // t.scheduleAtFixedRate(tt, 1000, 60*1000); //带固定执行频率
  177. //t.scheduleAtFixedRate(tt, dt, 60*1000);//带固定执行频率
  178.  
  179. }
  180.  
  181. public static void main(String[] args) throws IOException {
  182.  
  183. //不用浏览器,直接用代码发送文件给webservices所在服务器 并且可以周期行的发送
  184. FileUpload tTask=new FileUpload();
  185. // tTask.timeVoid();
  186. tTask.atTimeSchedule();
  187.  
  188. }
  189. }

不用浏览器,直接用代码发送文件给webservices所在服务器 并且可以周期行的发送的更多相关文章

  1. 浏览器上写代码,4核8G微软服务器免费用,Codespaces真香

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 一图胜千言 先上图,下面是欣宸在自己的iPad Pro ...

  2. scp复制发送文件夹到其他服务器上

    简述scp: scp是secure copy的简写,是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 写法: scp [可选参数] 登录名@地址:源路径  目标路径. 举例:scp -r ...

  3. C#使用FileSystemWatcher来监控指定文件夹,并使用TCP/IP协议通过Socket发送到另外指定文件夹

    项目需求: 局域网内有两台电脑,电脑A(Windows系统)主要是负责接收一些文件(远程桌面粘贴.FTP上传.文件夹共享等方式),希望能在A接收文件后自动传输到电脑B(Windows系统)来做一个备份 ...

  4. [转]C#网络编程(订立协议和发送文件) - Part.4

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...

  5. {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习

    要求: 实现多个客户端发送文件给一个服务器端 提示:多个人创建客户端发送文件,服务端循环接收socket,从socket中获取文件 说明:这里我们只要建立一个服务端就可以了,然后让多台电脑使用客户端给 ...

  6. C#网络编程(订立协议和发送文件) - Part.4

    文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时, ...

  7. ASP.NET MVC:通过 FileResult 向 浏览器 发送文件

    在 Controller 中我们可以使用 FileResult 向客户端发送文件. FileResult FileResult 是一个抽象类,继承自 ActionResult.在 System.Web ...

  8. ASP.NET MVC:通过FileResult向浏览器发送文件

    在 Controller 中我们可以使用 FileResult 向客户端发送文件. FileResult FileResult 是一个抽象类,继承自 ActionResult.在 System.Web ...

  9. ASP.NET MVC 向浏览器发送文件以提供文件下载功能

    撑到大三了,结果发现周围的同学更加堕落了,尤其是某些人,表面上看起来很认真,实际上三天打鱼,两天晒网,结果一事无成,却还要抱怨学校教育失败. 为了吸取他们的教训,就算是一个小小的编码问题,我也要努力解 ...

随机推荐

  1. UVa 11849 - CD

    题目:给你两个有序序列(每一个序列中元素不同),求两序列中都出现的元素个数. 分析:简单题. 合并排序合并过程. 设置两个指针.指向两序列当前元素.那个元素小指针向后移动.相同大则计数加一,同一时候后 ...

  2. ubuntu下安装RemixOS双系统(Android x86)

    这篇文章主要讲在怎样在ubuntu下安装RemixOS pc版(Android x86版本号),下面两种做法的思路都适合安装不论什么版本号的Android x86版本号到ubuntu系统上,仅仅须要改 ...

  3. FragmentActivity+FragmentTabHost+Fragement替代TabActibvity+TabHost+Activity

    自Android3.2之后,TabActibvity被弃用(Deprecated).取而代之的是FragmentActivity.由于Fragment比Activiy更灵活.消耗的资源更小.全然可以满 ...

  4. 5. webservice通信调用天气预报接口实例

    转自:https://blog.csdn.net/xiejuan6105/article/details/78452605 一:环境搭建 1:新建一个java project工程weatherInf ...

  5. centos 7.3 配置vnc 服务 图形界面登录

    1.检查系统是否有安装tigervnc-server软件包 rpm -qa |grep vnc 默认的系统未装tigervnc-server软件包 2.安装tigervnc-server软件包 yum ...

  6. Sqoop Import原理和详细流程讲解

    Sqoop Import原理 Sqoop Import详细流程讲解 Sqoop在import时,需要指定split-by参数.Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域 ...

  7. Cisco交换机解决网络蠕虫病毒入侵问题

    Cisco交换机解决网络蠕虫病毒入侵问题          今年来网络蠕虫泛滥给ISP和企业都造成了巨大损失,截至目前已发现近百万种病毒及木马.受感染的网络基础设施遭到破坏,以Sql Slammer为 ...

  8. Ionic2集成ArcGIS JavaScript API.md

    1. Ionic同原生ArcGIS JavaScript API结合 1.1. 安装esri-loader 在工程目录下命令行安装: npm install angular2-esri-loader ...

  9. C++中全局变量的声明和定义

    原文链接:http://blog.csdn.net/candyliuxj/article/details/7853938 (1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文 ...

  10. Oracle数据库IP访问限制(IP白名单黑名单)

    1.编辑sqlnet.ora 内容为: #允许访问的IP(白名单) TCP.INVITED_NODES=(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使 ...