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;}}}%>