`

httpclient上传文件例子

    博客分类:
  • JAVA
阅读更多

JAVA代码:

 

package destoon;
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;  

/**
 * 上传文件例子
 * @author YULI
 *
 */
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/HttpUtils/action.jsp");  
        FileBody fileBody = new FileBody(new File("D:/临时文件/1.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 import="java.util.Iterator"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>  
<!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>  
<%  
	String dir = application.getRealPath("/") + "temp\\";
    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;
                item.write(new File(dir + "\\" + item.getName()));
            }  
        }  
    }  
%>  

 

分享到:
评论

相关推荐

    用HttpClient来模拟浏览器GET POST

    再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了! &lt;br&gt;我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。当然了,正如前面说到的,如果我们自己使用java.net....

    接口开发、springboot、接口转发、前端直接调用图床API时我们发现会报错,编写一个后端接口进行代理即可解决,已实现的例子

    请注意,这个例子假设目标API接受名为"fileupload"的字段作为文件内容,并且不需额外的表单字段或头部信息。如果需要,请根据实际情况调整代码。同时,由于默认的`RestTemplate`并不完全支持发送多部分表单数据,...

    基于SpringMVC的一个web框架

    版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    基于Spring MVC的web框架 1.1.11

    版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...

    一个可以直接运行的基于SpringMVC的web框架1.1.12

    版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...

    SpringMVC基础上的web框架

    版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...

    java jdk实列宝典 光盘源代码

    内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;... 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    OPhone应用开发权威指南(黄晓庆)

    5.2.1 一个简单的例子:绘制立方体 169 5.2.2 理解变换 175 5.2.3 投影变换 177 5.2.4 视口变换 179 5.2.5 矩阵堆栈 180 5.3 绘制图元 180 5.3.1 图元种类 180 5.3.2 指定顶点数据 182 5.3.3 绘制图元 186 5.4 颜色...

    Android 常用六大框架

    (3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。 (4) 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android...

Global site tag (gtag.js) - Google Analytics