用到的包有commons-httpclient-3.0.1.jar、commons-codec-1.3.jar
客户端代码:
import java.io.File;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.StringPart;
public class HttpClientDemo {
public static void main(String arg[]){
String targetURL = null;// TODO 指定URL
File targetFile = null;// TODO 指定上传文件
targetFile = new File("c:\\tzh.txt");
targetURL = "http://localhost:8080/nel/uploadservice";
PostMethod filePost = new PostMethod(targetURL);
// filePost.setRequestHeader("Content-type", "multipart/form-data");
try
{
Part[] parts = {
new FilePart(targetFile.getName(), targetFile),
new StringPart( "filepath" , "/data/2011-08-08/"),
new StringPart( "machinename" , "machine1")
};
filePost.setRequestEntity(new MultipartRequestEntity(parts,filePost.getParams()));
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
int status = client.executeMethod(filePost);
if (status == HttpStatus.SC_OK)
{
System.out.println("上传成功");
// 上传成功
}
else
{
System.out.println("上传失败");
// 上传失败
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
filePost.releaseConnection();
}
}
}
服务器端代码:
package cn.vlabs.nel.ui.uploadmanage;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import cn.vlabs.app.common.tools.CommonTools;
import cn.vlabs.nel.service.clb.CLBFileStorage;
/**
* @author diyanliang@cnic.cn
* 2011-10-11
*/
public class UploadServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
try{
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096); // 缓冲区大小4kb
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(419430400); // 最大文件尺寸是400MB
List items = upload.parseRequest(request);// 得到所有的文件
Iterator i = items.iterator();
String[] restr = null;
while (i.hasNext()){
FileItem fi = (FileItem) i.next();
if(fi.isFormField()){
String strname = fi.getFieldName();
String value = fi.getString();
System.out.println(strname+"="+value);
}else{
String fileName = fi.getName();
InputStream in=fi.getInputStream();
CLBFileStorage clbFileStorage=(CLBFileStorage) CommonTools.getBeanFactory().getBean("clbFileStorage");
int rei= clbFileStorage.createFile(fileName, fi.getSize(), in);
System.out.println(rei);
}
}
}
catch (Exception e){
System.out.println(e.getMessage());
// 可以跳转出错页面
e.printStackTrace();
}
}
}
相关推荐
花了大半天写的测试类,用的时候记得改下引用的包名,可以当util工具类用,其他说明见博客 ...流方式发送接收: ...觉得可以的话,又不想复制粘贴,就花点积分下载吧,o(* ̄︶ ̄*)o
httpclient上传头像,将图片保存在文件中,添加文件参数,使用的post方式
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
CloseableHttpClient调用三方HTTP接口,带有FILE文件类型参数
在网上寻找之后,发现是使用HttClient来进行响应的操作,起初尝试多次依然不能传递参数和传递文件,后来发现时因为当使用HttpClient时,不能使用request.getParameter()对普通参数进行获取,而要在服务器端使用...
一款基于HttpClient的工具类。 可二次开发 ,目前已集成文件上传 参数传递 Json传输 请求头添加等功能
在开发中遇到乱码问题 上传文件并传其它参数时 按网上多种方法尝试设置UTF-8编码总是不好用,只好修改源码统一编码为utf-8 后打包,解决问题 此包没有经过其它编码环境下测试,不过应该不会有其它影响
该程序不仅支持文件上传,还能够传递FormData参数,为开发者提供了极大的便利。 这款程序的核心优势在于其高效性和灵活性。通过HttpClient类,程序能够快速建立与指定URL的连接,实现数据的快速传输。同时,它支持...
1.添加权限(访问网络权限和读写权限) 2.获取上传文件路径并判断是否为空 3.若不为空,创建异步请求对象 4.创建上传文件路径 5.执行post请求(指定url路径,封装上传参数,新建AsyncHttpResponseHandler方法)
HTTP POST当前主要是通过键值对传递参数,但是对于更为复杂的参数,例如图片、文件等,使用键值对则难以完成。这时我们就需要content-type为multipart,此资源即是开发所需的jar包:httpmime-4.3.1.jar&httpcore;-...
FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 Jelly Jelly是一个基于 ...
它支持表单参数、文件上传和自定义正文实体 无需丑陋的字符串连接即可轻松添加路由参数 本机支持基本身份验证 每个请求的可定制标头 完全了解代理。 可定制的超时时间 支持 gzip 通过一套全面的开发人员测试实现...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
快速链接 | 产品特点 流利的API 高度可扩展 中间件支持 启用DI的自定义类 访问同一范围内的两个请求/响应(类似于ASPNET中间件) 开箱即用的记录器和计时...文件上传支持 安装 适用于 注意:1.x取决于.NET Standa
使用HttpClient开源项目提交参数给服务器 4> 网络--通过HTTP协议实现文件上传 第五天 1> 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2> 网络--通过HTTP协议实现多线程断点续传下载 3...
将上传相关参数以这种方式提交给目标API。 4. Jackson库 用于序列化和反序列化JSON数据。 5. Java I/O 基于Java I/O操作 6. UUID类 避免文件名冲突 7. Lombok库 8. HTTP状态码管理 注意: 请注意,这个例子...
和发送,文件下载和上传。 特点: 清晰的网络请求回调 请求使用ThreadPool,限制并发资源使用情况 GET / POST基于参数构 建使用(RequestParams),方便 Multipart 文件上传,大数据上传下载 自动智能请求重试,优化了...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...