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来上传文件到服务器。Apache HttpClient支持POST请求,特别是Multipart/form-data类型的POST,这是上传文件的标准格式。以下是关于这个主题的详细讲解: 1. **...
在这个场景中,"HttpClient上传文件需要的Jar包"指的是在使用HttpClient进行文件上传操作时,你需要确保引入了正确的依赖库。 首先,我们需要了解HttpClient的基本概念。HttpClient是Apache软件基金会的一个项目,...
在学习HttpClient源码时,你可以深入理解HTTP协议的工作方式,了解如何使用Java进行网络编程,以及如何设计可扩展和高效的库。源码中的注释和设计模式也会帮助你提升Java编程技巧。 总的来说,Apache HttpClient ...
总结来说,Android通过HttpClient上传文件到服务器涉及以下几个关键步骤: 1. 添加HttpClient及相关库。 2. 创建HttpClient和HttpPost对象。 3. 构建MultipartEntity,包含要上传的文件信息。 4. 设置HttpPost的实体...
以上代码演示了使用Apache HttpClient上传文件的基本流程。在实际应用中,可能还需要处理异常、超时和重试策略等。如果你使用的是HttpURLConnection,虽然API略显复杂,但整体流程相似。 压缩包中的"java模式http...
在本篇文章中,我们将深入探讨如何使用HTTPClient上传文件以及解决可能出现的乱码问题。 首先,让我们关注“httpclient 上传文件”。在HTTP协议中,文件上传通常涉及到POST请求,特别是当Content-Type设置为...
在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了多种功能来简化HTTP客户端开发过程。本文档将详细介绍...
它允许我们将文件作为多部分/form-data类型的数据发送,这是HTTP协议中用于上传文件的标准格式。 3. **文件上传步骤**: - **创建HttpClient对象**:首先,我们需要实例化一个`CloseableHttpClient`对象,它是...
本篇文章将详细讲解如何利用HttpClient上传文件到测试服务器,这在进行API测试、自动化测试或者集成测试时非常有用。我们先来理解一下HttpClient的基本概念,然后逐步探讨文件上传的步骤。 HttpClient是由Apache...
使用HTTPClient,你可以方便地实现文件的POST请求(用于上传)和GET请求(用于下载)。 **RESTful风格** RESTful风格的Web服务设计强调资源的概念,通过HTTP方法(如GET、POST、PUT、DELETE)来操作这些资源。在...
HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`FileEntity`对象,指定要上传的文件路径,然后将其添加到`...
HttpClient 4 版本引入了许多改进,使得文件上传变得更加简单和高效。在这个主题中,我们将深入探讨HttpClient 4如何实现文件上传,以及相关的核心概念和技术。 首先,我们需要了解HttpClient 4的基本用法。...
在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`StringBody`表示其他参数。最后,将...
三、使用Commons HttpClient上传文件步骤 1. 添加依赖:首先需要在项目中引入Apache Commons HttpClient库。如果是Maven项目,可以在pom.xml中添加如下依赖: ```xml <groupId>commons-httpclient <artifactId>...
在本示例中,我们将深入探讨如何使用HttpClient的PostMethod来上传文件,以及处理Get和Post请求中的乱码问题。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许我们构建复杂的HTTP请求。它支持GET、POST...
标题 "HTTPS + Spring3 + HttpClient4 多文件上传" 涉及到的是在Java环境中,使用Spring3框架和Apache HttpClient4库实现通过HTTPS协议上传多个文件的技术。这个主题涵盖了几大关键知识点,包括HTTPS安全通信、...
总的来说,使用HTTPClient上传头像或文件涉及到HTTP POST请求的构建、文件的读取和转换、请求头的设置、请求的执行以及对服务器响应的处理。这个过程需要注意性能、安全性和错误处理,以确保文件上传的可靠性和效率...
为了模拟HTML表单上传文件,我们需要使用`MultipartEntityBuilder`来构建一个多部分实体,它允许我们混合文本字段和二进制数据,如文件。以下是一些关键步骤: 1. **依赖引入**:首先,确保在项目中引入Apache ...
- `LICENSE.txt`:包含了Apache Commons HttpClient的许可协议,它遵循Apache 2.0许可证,允许免费使用和修改源代码。 - `README.txt`:一般提供了项目的简介和快速入门指南。 - `NOTICE.txt`:通常列出库中可能包含...