`
zhcheng
  • 浏览: 164306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HttpClient使用HttpPost进行文件上传

 
阅读更多
import java.io.File;
import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class HttpClientPostMethod {
	
	public static void main(String[] args) throws ClientProtocolException, IOException {
		post();
	}

	public static void post() throws ClientProtocolException, IOException {
		HttpClient httpclient = new DefaultHttpClient();
		HttpPost post = new HttpPost("http://localhost:8080/action.jsp");
		FileBody fileBody = new FileBody(new File("/home/sendpix0.jpg"));
		StringBody stringBody = new StringBody("文件的描述");
		MultipartEntity entity = new MultipartEntity();
		entity.addPart("file", fileBody);
		entity.addPart("desc", stringBody);
		post.setEntity(entity);
		HttpResponse response = httpclient.execute(post);
		if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){  
			
			HttpEntity entitys = response.getEntity();
			if (entity != null) {
				System.out.println(entity.getContentLength());
				System.out.println(EntityUtils.toString(entitys));
			}
        }
		httpclient.getConnectionManager().shutdown();
	}
}

 

 

jsp文件:

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload,
					org.apache.commons.fileupload.disk.DiskFileItemFactory,
					java.io.*,
					java.util.*,
					org.apache.commons.fileupload.FileItem,
					org.opencms.extension.upload.*,
					org.opencms.extension.upload.db.*,
					org.opencms.jsp.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>upload.jsp</title>
</head>
<body>
<%
	if (ServletFileUpload.isMultipartContent(request)) {
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//设定内存可以存放文件的最大容量,单位字节,超过的部分会以临时文件的形式存放在硬盘上,这里设置成10兆
		factory.setSizeThreshold(10485760);
		File temp = new File("/temp");  
       if(!temp.exists()){  
          temp.mkdirs();  
        }
		//设置临时文件存放的位置
       factory.setRepository(temp);
		
       ServletFileUpload upload = new ServletFileUpload(factory);
		//设置单个文件最大容量限制,-1表示没有限制  
		upload.setFileSizeMax(-1);
		//设置整个请求的上传容量限制,-1表示没有限制  
		upload.setSizeMax(-1);
		
		List<FileItem> items = upload.parseRequest(request);  
		Iterator<FileItem> iterator = items.iterator();
		FileItem upload_item = null;
		String desc = "";
		while (iterator.hasNext()) {
			FileItem item = iterator.next();
			if(item.isFormField()){
				//普通字段
				//out.print(item.getFieldName());//得到字段name属性的值 
				//out.print(item.getString("UTF-8"));//得到字段的值
				desc = item.getString("UTF-8");
			}else{
				//文件字段
				//out.print("--------------");
				//out.print(item.getFieldName());
				//out.println(item.getContentType());//文件类型《application/pdf》
				//out.println(item.getName());//文件名称《入门.pdf》
				
				upload_item = item;
			}
		}
	}
%>
分享到:
评论

相关推荐

    HttpClient实现POST GET和文件下载

    文件上传通常涉及Multipart/form-data格式,可以使用`MultipartEntityBuilder`来构造请求实体: 1. **创建HttpPost请求**:设定目标URL。 2. **构建MultipartEntity**:使用`MultipartEntityBuilder`添加文件和其他...

    android httpclient文件上传 http协议post get方法向服务器传输数据

    在Android中,使用HTTPClient进行POST请求时,可以通过`HttpPost`对象设置`EntityEnclosingRequestBase`的`setEntity()`方法来添加请求实体,包含要发送的数据。 3. **HTTPClient文件上传**:在Android中,...

    HttpClient 4文件上传

    通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`MultipartEntity`对象,以及处理好请求和响应过程中可能出现的各种异常情况。同时,需要注意解决中文乱码等问题...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...

    httpclient和RestfuL风格上传下载文件

    在HTTPClient中,文件上传通常涉及使用`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类。你需要创建一个multipart/form-data格式的请求体,然后将文件流添加到请求中。RESTful服务端通常会提供一个...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    httpClient post 上传 下载 图片

    下面将详细介绍如何使用HttpClient进行图片的上传和下载,并探讨如何修改上传和下载的URI。 1. **HttpClient上传图片**: - 首先,我们需要创建一个`HttpPost`对象,设置目标URI,这通常是一个服务器端处理图片...

    HttpClient 4 - 文件上传

    总结起来,HttpClient 4通过`MultipartEntity`和`HttpPost`提供了强大的文件上传功能,结合`HttpAsyncClient`还能实现高效的异步传输。这些组件和类库是理解和实现HTTP文件上传的关键,对于任何需要与Web服务器交互...

    http post方式上传文件(C#)

    本文将深入探讨如何使用C#进行HTTP POST方式的文件上传,并关注一些关键点,如文件大小不受限制、上传进度显示以及确保文件的稳定传输。 首先,我们要理解HTTP POST请求的工作原理。POST请求是HTTP协议中的一个方法...

    httpClient httpPost httpGet 所需jar包

    4. 所需jar包:使用HttpClient、HttpPost和HttpGet需要引入以下核心jar包: - `httpclient.jar`:包含HttpClient的主要实现,提供了基本的HTTP通信功能。 - `httpcore.jar`:HttpClient的核心组件,提供了HTTP协议...

    HttpClient 文件上传

    在这个场景中,我们主要关注如何使用HttpClient进行文件上传。 文件上传通常涉及到Web服务器与客户端之间的交互,比如用户通过网页上传图片或文档到服务器。HttpClient库提供了一个方便的接口来实现这种功能。以下...

    四、使用HttpClient上传测试文件服务器

    下面我们将详细介绍如何使用HttpClient进行文件上传: 1. **配置HttpClient**: 首先,我们需要创建一个HttpClient实例并进行配置。这包括设置连接超时、重试策略、HTTP连接管理器等。例如,我们可以使用`...

    使用HttpClient实现文件的上传所需lib

    在Java开发中,HttpClient是一个非常重要的库,它允许...通过理解和熟练运用这些知识点,开发者能够使用HttpClient有效地实现文件上传功能。在实际项目中,还需要结合具体的业务需求和服务器端接口来调整和优化代码。

    httpclient.post例子

    通过`java_httpclient_post`这个文件名,我们可以推测其中可能包含了完整的示例代码或者相关教程,你可以参考这个文件来实践和学习HttpClient的POST请求使用。记住,实践是检验理论的最好方式,尝试运行这个例子,看...

    MFC的HttpClient的Get和Post方法

    本文将详细讲解如何在MFC中利用HttpClient进行GET和POST操作。 首先,我们需要理解HTTP协议的基本概念。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换各类数据。GET和POST是HTTP请求中最常见的两种方法...

    HttpClient上传文件需要的Jar包

    在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...

    httpclient 上传文件

    总结起来,使用HTTPClient进行文件上传涉及创建POST请求、构建多部分实体、设置字符集,以及正确处理响应。乱码问题通常源于字符集不匹配,需在客户端和服务器端都进行适当的设置。理解这些知识点有助于在实际开发中...

    httpclient 文件上传 下载

    文件上传通常涉及到HTTP的POST或PUT方法,其中包含了文件数据。HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`...

    httpClient上传文件

    在Java编程中,Apache HttpClient库是一个非常常用的工具,用于...以上就是使用Apache HttpClient进行文件上传的基本流程和技术细节,以及相关的Servlet处理部分。在实际开发中,还需要根据具体需求进行调整和优化。

Global site tag (gtag.js) - Google Analytics