直接上代码吧!
package cn.java.basic.upload;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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;
public class HttpUpload {
private static final String UPLOADURL = "http://192.168.0.181:8099/upload";
private static final String KEY_USERNAME = "username";
private static final String KEY_MD5ORSHA1 = "md5orsha1";
private static final String KEY_FILE = "myfile";
private String username;
private String md5orsha1;
private String filePath;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMd5orsha1() {
return md5orsha1;
}
public void setMd5orsha1(String md5orsha1) {
this.md5orsha1 = md5orsha1;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public HttpUpload(String username, String md5orsha1, String filePath) {
super();
this.username = username;
this.md5orsha1 = md5orsha1;
this.filePath = filePath;
}
public String postFile() throws ClientProtocolException, IOException {
FileBody fileBody = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(UPLOADURL);
File file = new File(filePath);
if (file != null) {
fileBody = new FileBody(file);
}
StringBody usernameStringBody = new StringBody(username);
StringBody md5orsha1StringBody = new StringBody(md5orsha1);
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart(KEY_USERNAME, usernameStringBody);
reqEntity.addPart(KEY_MD5ORSHA1, md5orsha1StringBody);
reqEntity.addPart(KEY_FILE, fileBody);
httppost.setEntity(reqEntity);
System.out.println("执行: " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
System.out.println("statusCode is "
+ response.getStatusLine().getStatusCode());
HttpEntity resEntity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println("返回长度: " + resEntity.getContentLength());
System.out.println("返回类型: " + resEntity.getContentType());
InputStream in = resEntity.getContent();
String returnValue = inputStream2String(in);
System.out.println("returnValue:" + returnValue);
return returnValue;
}
if (resEntity != null) {
resEntity.consumeContent();
}
return null;
}
public static String inputStream2String(InputStream in) throws IOException {
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
}
return out.toString();
}
public static void main(String[] args) throws ClientProtocolException,
IOException {
String username = "10000";
String md5orsha1 = "11111111111111111111111111111112";
String filePath = "e:\\b.jpg";
HttpUpload hu = new HttpUpload(username, md5orsha1, filePath);
System.out.println(hu.postFile());
}
}
输出结果:
使用返回的地址去访问图片
工程需要如下包:
附上jar包吧!
- 大小: 3.8 KB
- 大小: 60.4 KB
- 大小: 2.2 KB
分享到:
相关推荐
在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`StringBody`表示其他参数。最后,将...
HttpClient还支持多部分文件上传,这对于测试涉及文件上传的接口非常有用。通过使用MultipartEntityBuilder,可以添加多个Part,每个Part可以是文件或普通数据。 在发送请求后,HttpClient会返回一个HttpResponse...
5. **执行请求**:使用HttpClient的`execute`方法发送请求,并获取`HttpResponse`对象,其中包含了服务器的响应。 6. **处理响应**:从`HttpResponse`中提取响应码、响应体等信息。可以使用`getStatusLine`获取状态...
本篇文章将详细讲解如何使用`HttpURLConnection`实现文件上传,同时涉及到服务器端处理上传文件的代码。我们将讨论以下核心知识点: 1. **HttpURLConnection介绍**: `HttpURLConnection`是Java标准库中的类,它是...
`httpclient.jar`文件是HttpClient库的二进制形式,包含所有必要的类和资源,可以直接引入到Java项目中使用,无需构建过程。将这个JAR添加到项目的类路径后,就可以开始编写HTTP客户端代码了。 实战示例: ```java...
总结起来,这些jar包共同构成了一个完整的Java HttpClient环境,能够处理各种复杂的HTTP通信任务,从简单的GET和POST请求到复杂的文件上传、多部分表单数据处理,以及与Web服务器的高级交互。开发者可以根据项目需求...
在某些场景下,比如开发测试或调试时,我们可能需要模拟上传文件到HTTPS服务器,而这个过程可能会遇到SSL(Secure Sockets Layer)认证的问题。SSL认证是网络安全的一种机制,用于验证服务器的身份,防止中间人攻击...
综上所述,通过理解Alfresco的工作原理,掌握HttpClient的使用方法,以及熟悉Alfresco的Web Script机制,我们可以实现将本地文件上传到Alfresco服务器的功能。在这个过程中,文件上传是通过HTTP POST请求完成的,...
4. **httpmime-4.5.3.jar**: 这个库扩展了HttpClient的功能,支持MIME类型的数据发送,例如上传文件或发送带有复杂格式的POST请求。使用HttpMultipartEntity或MultipartEntityBuilder可以方便地处理多媒体内容。 5....
- 文件下载/上传:通过 POST 或 GET 方式进行大文件传输。 - 爬虫开发:爬取网页数据,进行数据分析。 - 自动化测试:模拟用户行为,测试 Web 应用功能。 总结,HttpClient 4.0 作为 Java 中的网络通信库,其强大的...
在描述中提到的博客链接指向了一个详细的教程,该教程可能详细解释了如何使用HttpClient库来上传一个JAR文件。通常,这个过程涉及到以下几个步骤: 1. **创建HttpClient实例**:首先,我们需要创建一个HttpClient...
在使用Apache Commons HttpClient 3.1时,我们通常会遇到的文件有: - `commons-httpclient-3.1.jar`:这是HttpClient的主要库文件,包含了所有必要的类和方法。 - `RELEASE_NOTES.txt`:记录了该版本的发布说明,...
HTTPClient是Java编程语言中广泛使用的HTTP客户端库,主要用于与HTTP服务器进行通信。这个压缩包文件包含三个重要的组件,它们是: 1. **httpclient-4.3.3.jar**:这是Apache HttpClient库的主要实现,版本4.3.3。...
这涉及到创建`MultiPartEntity`(如果使用Apache HttpClient)或`RequestBody`(如果使用OkHttp),设置合适的边界,并添加文件作为请求体的一部分。 5. **服务器端处理**:Java服务器端需要解析接收到的`multipart...
在给定的"javaFastDFS上传文件测试类"中,我们可以看到一个名为`TestFastDFS`的公共类,这个类是用于测试FastDFS文件上传功能的。在Java编程中,测试类通常包含一系列的JUnit测试方法,用于验证代码的正确性。`...
下面是一个简单的示例代码,用于演示如何使用HttpClient获取网页内容: ```java package http.demo; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod;...
这个库在早期的 Java 开发中非常流行,特别是在需要与 Web 服务器进行复杂交互或者实现自动化测试时。"commons-httpclient.zip" 文件很可能是 Apache Commons HttpClient 库的源代码或二进制包的压缩形式。 Apache ...
例如,使用`CookieStore`管理cookies,使用`RedirectStrategy`处理重定向,使用`MultipartEntityBuilder`处理文件上传等。 在实际开发中,建议使用HttpComponents Client的最新稳定版本,以获得最新的性能优化和...
HttpClient允许开发者创建自定义的HTTP请求,并能处理复杂的网络交互,比如上传文件、处理cookies、处理重定向等。 使用HttpClient访问网络数据的基本步骤如下: 1. **创建HttpClient实例**:首先,需要创建一个...