`

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 上传文件

    在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...

    httpclient.post例子

    首先,我们需要理解POST请求的基本概念,它通常用于向服务器发送数据,比如提交表单或者上传文件。 在`httpclient.jar`包中,主要涉及`org.apache.http.client`和`org.apache.http.entity`这两个关键包,它们提供了...

    httpclient用到的jar文件,例子

    2. **POST方法**:POST方法用于向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。POST方法可以传输大量数据,数据在请求...

    Httpclient+testng接口测试小例子

    在"Httpclient+testng接口测试小例子"中,我们将使用以下步骤进行接口测试: 1. **环境准备**:首先,确保项目中已经添加了Apache HttpClient和TestNG的依赖。这些通常通过Maven或Gradle等构建工具进行管理,通过在...

    C# 断点续传下载文件 实例源码(网络操作)

    本实例源码着重于C#中的一个高级特性——断点续传下载文件,这在处理大文件下载时尤其有用,因为它允许用户在中断后从上次停止的位置继续下载,而不是重新开始。 断点续传技术的基本原理是通过记录已下载文件的部分...

    HttpClient通过Post上传文件的实例代码

    在这个例子中,我们创建了两个FileBody对象,分别对应于要上传的两个文件`filename1`和`filename2`,并指定了它们在服务器上的相对路径。`StringBody`用于添加一个普通字符串参数`filename1`。所有这些实体都被添加...

    安卓httpClient例子

    下面我们将深入探讨Android中使用HttpClient的例子及其相关知识点。 1. **HttpClient的基本概念** HttpClient是一个基于Java语言的HTTP客户端编程工具包,它提供了丰富的API,可以方便地创建、发送和处理HTTP请求...

    httpClient组合包.zip

    在这个例子中,我们创建了一个MultipartEntity,添加了一个二进制文件,并将其设置为HttpPost的实体,从而实现了文件的上传。 HttpClient还支持其他的高级特性,如自定义请求头、HTTP代理设置、超时控制、SSL/TLS...

    HttpClient 需要的JAR包和例子

    这个示例展示了HttpClient的基本用法,但实际使用时,你可能需要根据具体需求进行更复杂的操作,如POST请求、文件上传、重试策略、连接池管理等。HttpClient提供了丰富的API来支持这些高级功能,使其成为Java HTTP...

    httpclient httpclient.jar

    HttpClient还支持更复杂的用法,如POST请求、文件上传、Cookie管理、HTTPS通信、自定义连接管理器等。通过深入学习HttpClient,你可以更灵活地处理与Web服务器的交互,实现各种复杂的网络功能。

    HttpClient3.1 学习整理

    在文件上传方面,HttpClient3.1 提供了`MultipartRequestEntity`类,允许你构建包含多个部分(如文件和文本字段)的POST请求。通过设置`Part[]`数组,你可以指定要上传的文件和字段名,然后将其传递给`...

    HttpClient post提交文件加传参的demo

    这个简单的例子展示了HttpClient如何处理文件上传和参数传递,这对于开发Web服务客户端或者测试接口非常有用。在实际应用中,你可能需要根据具体需求调整代码,例如处理错误、添加超时设置、使用不同的编码方式等。...

    HttpClient的简单使用,get、post、上传、下载

    HttpClient支持通过表单或multipart/form-data格式上传文件。以下是一个使用HttpPost和FileEntity的例子: ```java File file = new File("/path/to/file"); HttpEntity entity = MultipartEntityBuilder.create() ...

    HttpClient介绍和使用文档

    在处理文件上传的问题上,HttpClient也提供了便捷的方法,使得开发者可以轻松地发送POST请求并附带文件数据。 以下是一个使用HttpClient简单读取网页内容的例子: ```java import java.io.IOException; import org...

    用HttpClient来模拟浏览器GET_POST

    通过使用HttpClient,可以轻松地解决以前很头疼的事情,例如处理COOKIE问题、上传文件等。 在使用HttpClient之前,我们需要了解为什么需要模拟浏览器GET_POST。通常情况下,我们都是使用IE或Navigator浏览器来访问...

    winform上传文件,带进度条,用一般处理程序ashx接收,传有参数。源代码例子下载

    - 在客户端,使用`WebClient`或`HttpClient`类可以方便地发送带有文件的POST请求。为了发送进度信息,可以监听`HttpContent.ReadAsByteArrayAsync`或其他读取方法的进度事件。 7. **参数传递**: - 在文件上传的...

    c#同时上传文件和参数

    请注意,这个例子假设你已经有了文件的本地路径,实际项目中你可能需要从用户选择或内存中获取文件。此外,接口的具体要求可能会有所不同,比如参数的命名、文件的大小限制等,需要根据实际API文档进行调整。 在...

    java动态提交网站httpclient

    HTTPClient库允许我们创建GET、POST等请求,添加头信息,处理响应,甚至进行更复杂的操作,如表单提交和文件上传。 在Java中,Apache HttpClient库是最常用的HTTP客户端实现之一。要使用它,首先需要在项目中引入...

    WebApi 文件上传下载例子

    使用HttpClient上传文件 在客户端(例如,使用C#的`HttpClient`或JavaScript的`fetch`),你可以构造一个POST请求,包含文件数据。对于C#,可以使用`MultipartFormDataContent`来封装文件数据。 ```csharp var ...

Global site tag (gtag.js) - Google Analytics