`
zhangzcz1999
  • 浏览: 147606 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用apache的Httpclient上传文件

阅读更多
	String targetUrl = "http://localhost:8080/Test";
	PostMethod filePost = new PostMethod(targetUrl) {//这个用来中文乱码
			public String getRequestCharSet() {
					return "UTF-8";//
				}
	}; 
	try {
				HttpClient client = new HttpClient();
				File file = new File("c:/新闻.xml");
				Part[] parts = new Part[] {new CustomFilePart(file.getName(), file)};
				filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
				int statuscode=client.executeMethod(filePost);       
				if(statuscode == HttpStatus.SC_OK) {
System.out.println("添加文件成功");
} else {
System.out.println("添加文件失败");
}
} catch (Exception ex) {
ex.printStackTrace();
}

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.util.EncodingUtil;
/**
*解决中文文件名乱码
*/
public class CustomFilePart extends FilePart {
	public CustomFilePart(String filename, File file)
			throws FileNotFoundException {
		super(filename, file);
	}

	protected void sendDispositionHeader(OutputStream out) throws IOException {
		super.sendDispositionHeader(out);
		String filename = getSource().getFileName();
		if (filename != null) {
			out.write(EncodingUtil.getAsciiBytes(FILE_NAME));
			out.write(QUOTE_BYTES);
			out.write(EncodingUtil.getBytes(filename, "utf-8"));
			out.write(QUOTE_BYTES);
		}
	}
}


而服务端使用apache的commonfileupload:
File tempfile = new File(System.getProperty("java.io.tmpdir"));	// 采用系统临时文件目录
			DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
			diskFileItemFactory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
			diskFileItemFactory.setRepository(tempfile); // 设置缓冲区目录
			ServletFileUpload fu = new ServletFileUpload(diskFileItemFactory);
			fu.setSizeMax(4194304);	// 限制文件大小最大为4M
			List fileItems = fu.parseRequest(request);
			Iterator i = fileItems.iterator();
			while (i.hasNext()) {
				FileItem fi = (FileItem) i.next();
				String fileName = fi.getName();
				if (fileName != null) {
					File fullFile = new File(fi.getName());
					File savedFile = new File(uploadPath, fullFile.getName());
					fi.write(savedFile);
				}
			}
			System.out.println("upload succeed");


分享到:
评论

相关推荐

    httpClient上传文件

    在这个场景中,我们关注的是如何使用HttpClient来上传文件到服务器。Apache HttpClient支持POST请求,特别是Multipart/form-data类型的POST,这是上传文件的标准格式。以下是关于这个主题的详细讲解: 1. **...

    HttpClient上传文件需要的Jar包

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

    Apache httpclient源码4.5.12

    在学习HttpClient源码时,你可以深入理解HTTP协议的工作方式,了解如何使用Java进行网络编程,以及如何设计可扩展和高效的库。源码中的注释和设计模式也会帮助你提升Java编程技巧。 总的来说,Apache HttpClient ...

    Android使用HttpClient上传文件到服务器完整实例

    总结来说,Android通过HttpClient上传文件到服务器涉及以下几个关键步骤: 1. 添加HttpClient及相关库。 2. 创建HttpClient和HttpPost对象。 3. 构建MultipartEntity,包含要上传的文件信息。 4. 设置HttpPost的实体...

    java代码模拟http上传文件_代码_类包

    以上代码演示了使用Apache HttpClient上传文件的基本流程。在实际应用中,可能还需要处理异常、超时和重试策略等。如果你使用的是HttpURLConnection,虽然API略显复杂,但整体流程相似。 压缩包中的"java模式http...

    httpclient 上传文件

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

    HttpClient 4文件上传

    在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了多种功能来简化HTTP客户端开发过程。本文档将详细介绍...

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

    它允许我们将文件作为多部分/form-data类型的数据发送,这是HTTP协议中用于上传文件的标准格式。 3. **文件上传步骤**: - **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,它是...

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

    本篇文章将详细讲解如何利用HttpClient上传文件到测试服务器,这在进行API测试、自动化测试或者集成测试时非常有用。我们先来理解一下HttpClient的基本概念,然后逐步探讨文件上传的步骤。 HttpClient是由Apache...

    httpclient和RestfuL风格上传下载文件

    使用HTTPClient,你可以方便地实现文件的POST请求(用于上传)和GET请求(用于下载)。 **RESTful风格** RESTful风格的Web服务设计强调资源的概念,通过HTTP方法(如GET、POST、PUT、DELETE)来操作这些资源。在...

    httpclient 文件上传 下载

    HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`FileEntity`对象,指定要上传的文件路径,然后将其添加到`...

    HttpClient 4 - 文件上传

    HttpClient 4 版本引入了许多改进,使得文件上传变得更加简单和高效。在这个主题中,我们将深入探讨HttpClient 4如何实现文件上传,以及相关的核心概念和技术。 首先,我们需要了解HttpClient 4的基本用法。...

    struts2 android httpclient 上传文件

    在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`StringBody`表示其他参数。最后,将...

    httpclient上传文件

    三、使用Commons HttpClient上传文件步骤 1. 添加依赖:首先需要在项目中引入Apache Commons HttpClient库。如果是Maven项目,可以在pom.xml中添加如下依赖: ```xml <groupId>commons-httpclient <artifactId>...

    HttpClient PostMethod 上传文件

    在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...

    https+spring3+httpclient4多文件上传

    标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...

    httpclient上传头像,图片,文件

    总的来说,使用HTTPClient上传头像或文件涉及到HTTP POST请求的构建、文件的读取和转换、请求头的设置、请求的执行以及对服务器响应的处理。这个过程需要注意性能、安全性和错误处理,以确保文件上传的可靠性和效率...

    使用apache httpcomponents 模拟html表单上传文件

    为了模拟HTML表单上传文件,我们需要使用`MultipartEntityBuilder`来构建一个多部分实体,它允许我们混合文本字段和二进制数据,如文件。以下是一些关键步骤: 1. **依赖引入**:首先,确保在项目中引入Apache ...

    org.apache.commons.httpclient-3.1.jar

    - `LICENSE.txt`:包含了Apache Commons HttpClient的许可协议,它遵循Apache 2.0许可证,允许免费使用和修改源代码。 - `README.txt`:一般提供了项目的简介和快速入门指南。 - `NOTICE.txt`:通常列出库中可能包含...

Global site tag (gtag.js) - Google Analytics