import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; public class FileUpload { public static void main(String[] args) throws Exception {
FileUpload fileupload=new FileUpload();
String LoginUrl = "";// 登录地址,get请求,所以这里面带了账号和密码
String UploadUrl = "";// 上传文件地址
String FileUrl ="";// 所要上传的文件夹 fileupload.GetCookies(LoginUrl);
fileupload.UploadFile(UploadUrl, FileUrl); } private static BasicCookieStore cookieStore = new BasicCookieStore();
private static CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(cookieStore).build(); // 登录请求Get,得到cookie。如果是post请求,把账号和密码配置成表单参数,
public void GetCookies(String urlstr) throws Exception {
HttpGet httpget = new HttpGet(urlstr);
httpClient.execute(httpget); } //文件上传请求,POST
public void UploadFile(String Url, String sqlitPath)
throws IOException {
try {
HttpPost httpPost = new HttpPost(Url);
File root = new File(sqlitPath);
File[] files = root.listFiles();
for (File file : files) {
String FilePath = file.getAbsolutePath();
HttpEntity reqEntity = makeMultipartEntity(FilePath);
httpPost.setEntity((org.apache.http.HttpEntity) reqEntity);
httpClient.execute(httpPost);
}
} finally {
httpClient.close();
} } // 配置文件上传参数
public HttpEntity makeMultipartEntity(String sqlitPath) {
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); NameValuePair pair1 = new BasicNameValuePair("", "");
NameValuePair pair2 = new BasicNameValuePair("", "");
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(pair1);
pairs.add(pair2); if (pairs != null && pairs.size() > 0) {
for (NameValuePair p : pairs) {
builder.addTextBody(p.getName(), p.getValue(),
ContentType.TEXT_PLAIN.withCharset("UTF-8"));
}
}
FileBody bin = new FileBody(new File(sqlitPath));
builder.addPart("upload", bin);
return builder.build();
}
}

用java程序模拟网站的登录以及文件批量上传的更多相关文章

  1. jquery文件批量上传控件Uploadify3.2(java springMVC)

    人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分f ...

  2. [Pulgin] 利用swfupload实现java文件批量上传

    URL:http://blog.csdn.net/xuweilinjijis/article/details/8876305 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传 ...

  3. 用Java写个ftp传输类实现文件的上传和下载,用ikvmc转成dll

    1.Java类: package com.wjy.ftp.transmission; import java.io.File; import java.io.FileOutputStream; imp ...

  4. 模拟文件上传(三):使用apache fileupload组件进行文件批量上传

    其中涉及到的jar包 jsp显示层: <%@ page language="java" import="java.util.*" pageEncoding ...

  5. java web(四):request、response一些用法和文件的上传和下载

    上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...

  6. Java Web 项目的文件/文件夹上传下载

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  7. 使用原生Java Web来实现大文件的上传

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  8. Java实现浏览器端大文件分片上传

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  9. Java web开发——文件的上传和下载

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

随机推荐

  1. HDU 4237 The Rascal Triangle

    The Rascal Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  2. Java程序版权保护解决方案

    通常C.C++等编程语言开发的程序都被编译成目标代码,这些目标代码都是本机器的二进制可执行代码.通常所有的源文件被编译.链接成一个可执行文件.在这些可执行文件中,编译器删除了程序中的变量名称.方法名称 ...

  3. 学习xcode 博客

    csdn http://blog.csdn.net/tianyitianyi1/article/category/1160169/2

  4. UVA 11183 Teen Girl Squad 最小树形图

    最小树形图模板题 #include <iostream> #include <algorithm> #include <cstdio> #include <c ...

  5. PowerShell:Linux程序员喜欢的cmd增强版

    Linux程序员有时偶尔使用Windows下的cmd工具,会被逼疯的,有些命令ls, cat, ps等已经条件反射一样使用. 但在cmd下,根本不知道该用什么命令,好在盖兹大叔照顾了此部分需求.从Vi ...

  6. 【译】 AWK教程指南 8处理多行数据

    awk 每次从数据文件中只读取一行数据进行处理.awk是依照其内置变量 RS(Record Separator) 的定义将文件中的数据分隔成一行一行的Record.RS 的默认值是 "\n& ...

  7. windows内核窥探

    windows是一个非常优秀的OS,从今天开始,我要和大家共同分享windows给我们带来的快乐!本人只所以将自己的学习笔记与大家分享,一是让自己更深入的理解windows,再就是有什么疏漏之处,望大 ...

  8. window2008 64位系统没有office组件问题分析及解决

    服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...

  9. Eclipse热部署JSP

    项目中JSP修改,每次都要重新部署启动才生效,我真切记得以前都不是这样子的 本来应该只需要刷新页面就可以查看到最新的修改的了 和以前工作空间项目配置对比        唯一不同的是,我现在这个工作空间 ...

  10. 检索表中所有列的名称、DB中的用户表

    一.检索某个表中所有列的名称 SELECT name FROM syscolumns WHERE ID = OBJECT_ID('Departments') syscolumns (sys.sysco ...