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;
}
}
}
%>
分享到:
相关推荐
文件上传通常涉及Multipart/form-data格式,可以使用`MultipartEntityBuilder`来构造请求实体: 1. **创建HttpPost请求**:设定目标URL。 2. **构建MultipartEntity**:使用`MultipartEntityBuilder`添加文件和其他...
在Android中,使用HTTPClient进行POST请求时,可以通过`HttpPost`对象设置`EntityEnclosingRequestBase`的`setEntity()`方法来添加请求实体,包含要发送的数据。 3. **HTTPClient文件上传**:在Android中,...
通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`MultipartEntity`对象,以及处理好请求和响应过程中可能出现的各种异常情况。同时,需要注意解决中文乱码等问题...
在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...
在HTTPClient中,文件上传通常涉及使用`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类。你需要创建一个multipart/form-data格式的请求体,然后将文件流添加到请求中。RESTful服务端通常会提供一个...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
下面将详细介绍如何使用HttpClient进行图片的上传和下载,并探讨如何修改上传和下载的URI。 1. **HttpClient上传图片**: - 首先,我们需要创建一个`HttpPost`对象,设置目标URI,这通常是一个服务器端处理图片...
总结起来,HttpClient 4通过`MultipartEntity`和`HttpPost`提供了强大的文件上传功能,结合`HttpAsyncClient`还能实现高效的异步传输。这些组件和类库是理解和实现HTTP文件上传的关键,对于任何需要与Web服务器交互...
本文将深入探讨如何使用C#进行HTTP POST方式的文件上传,并关注一些关键点,如文件大小不受限制、上传进度显示以及确保文件的稳定传输。 首先,我们要理解HTTP POST请求的工作原理。POST请求是HTTP协议中的一个方法...
4. 所需jar包:使用HttpClient、HttpPost和HttpGet需要引入以下核心jar包: - `httpclient.jar`:包含HttpClient的主要实现,提供了基本的HTTP通信功能。 - `httpcore.jar`:HttpClient的核心组件,提供了HTTP协议...
在这个场景中,我们主要关注如何使用HttpClient进行文件上传。 文件上传通常涉及到Web服务器与客户端之间的交互,比如用户通过网页上传图片或文档到服务器。HttpClient库提供了一个方便的接口来实现这种功能。以下...
下面我们将详细介绍如何使用HttpClient进行文件上传: 1. **配置HttpClient**: 首先,我们需要创建一个HttpClient实例并进行配置。这包括设置连接超时、重试策略、HTTP连接管理器等。例如,我们可以使用`...
在Java开发中,HttpClient是一个非常重要的库,它允许...通过理解和熟练运用这些知识点,开发者能够使用HttpClient有效地实现文件上传功能。在实际项目中,还需要结合具体的业务需求和服务器端接口来调整和优化代码。
通过`java_httpclient_post`这个文件名,我们可以推测其中可能包含了完整的示例代码或者相关教程,你可以参考这个文件来实践和学习HttpClient的POST请求使用。记住,实践是检验理论的最好方式,尝试运行这个例子,看...
本文将详细讲解如何在MFC中利用HttpClient进行GET和POST操作。 首先,我们需要理解HTTP协议的基本概念。HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换各类数据。GET和POST是HTTP请求中最常见的两种方法...
在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...
总结起来,使用HTTPClient进行文件上传涉及创建POST请求、构建多部分实体、设置字符集,以及正确处理响应。乱码问题通常源于字符集不匹配,需在客户端和服务器端都进行适当的设置。理解这些知识点有助于在实际开发中...
文件上传通常涉及到HTTP的POST或PUT方法,其中包含了文件数据。HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`...
在Java编程中,Apache HttpClient库是一个非常常用的工具,用于...以上就是使用Apache HttpClient进行文件上传的基本流程和技术细节,以及相关的Servlet处理部分。在实际开发中,还需要根据具体需求进行调整和优化。