不用浏览器,直接用代码发送文件给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 = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, 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=0;

//周期上传 知道达到指定条件
public void timeVoid(){

    final Timer timer = new Timer();

    TimerTask tt=new TimerTask() {
        @Override
        public void run() {

             FileUpload up = new FileUpload();
             int  j=1;
             while(j<10){

                  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 ("+(10*counter+j)+") of xz.jpg"
                                 )
                             );
                 } catch (IOException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
                 }

                 j++;
             }

             counter++;
             System.out.println("counter--->"+counter);

            if(counter==3){
                timer.cancel();
                System.out.println("到点啦!");
            }

        }
    };
    //执行tt 延时10s 每分钟执行1次
    timer.schedule(tt, 10000,1*60*1000/2);
}

// 在指定时间 周期执行  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(),30) ;

    Timer t=new Timer(false);
    TimerTask tt=new TimerTask(){

        @Override
        public void run() {

            //放任务的地方
            System.out.println(" exectue time: "+new Date());

        }};
    t.schedule(tt, dt, 60*1000);
    //    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();

    }
}
时间: 2024-07-31 23:57:58

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

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

转载自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Recei

C#网络编程(订立协议和发送文件)

C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg.Server02.jpg.Server03.

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

FileResult is an abstract base class for all the others. FileContentResult - you use it when you have a byte array you would like to return as a file FilePathResult - when you have a file on disk and would like to return it's content (you give a path

【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输

Server.java package com.huaxin.lesson02; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.net.ServerSocket; import java.net.Socket; /** * @thing 实现客户端发送文件到服务器 * @thing 客户端发送到客户端(本代码未实现) * @aut

(实用篇)PHP不用递归遍历目录下所有文件的代码

<?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

解决微信内嵌浏览器无法响应上传文件(图片)的思路(2种办法)

进园一年多来,第一次写博客,好激动.原因主要是自己平时都是有写笔记,不习惯写博客,这次想写博客的原因是,这个问题确实我做了很久,已经做了近两周才解决了这个问题,,而且两周时间里尝试过了很多种办法,然后由于网上又没有多少人分享这个,决定自己写一下. 先自我介绍下,我是惠州学院大二(准大三)的学生,在去年暑假时候加了一个工作室开始写代码,也是在那个时候加入博客园,最近因为工作室要做微信端网页的开发需要一个上传图片功能,然后编码的时候发现用平时的方法做的上传功能在Android的微信端上实现不了,百度

php -- PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而不是通过浏览器直接打开下载的文件

之前做项目遇到这样一个问题,就是在php环境下,用a标签的href链接到一个资源,比如是mp3或者lrc文件时,点击之后不是出现保存文件的提示,而是调用本地程序打开文件或者直接在浏览器上解析.网上说可以全部做成rar格式的文件,这个一方面不方便,有些情况下也不可能完全这样做,还有实际上,做过测试会发现,在content-type:text/html的情况下,即时是rar有时也会被浏览器直接解析,无法实现下载的功能,那这个问题是不是就无解了呢?答案是否定的,几番搜索+测试,终于发现了一个可行的解决

20个最强的基于浏览器的在线代码编辑器

20个最强的基于浏览器的在线代码编辑器,你听过或者用过吗? 1. Compilr Compilr是一个在线编译器和在线IDE.可以用它来开发PHP, C, C++, Ruby.在浏览器中编译Java, C# 和 VB.net等. 马上使用 2. Dabblet 跨浏览器兼容,对前端攻城师们来说是一个不得不处理的问题.为了在浏览器间呈现统一的显示效果,攻城师们不仅要为每个游览器添加CSS前缀,甚至还需要用到一些特殊的CSS Hack技巧.于是,jsFiddle.JSBin等前端代码的在线测试工具应

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外