java httpurlconnection 文件_Java-HttpURLConnection上传文件
时间: 2024-06-08 17:07:12 浏览: 243
Java自带的HttpURLConnection访问接口实现文件上传
Java中使用HttpURLConnection上传文件可以通过以下步骤实现:
1. 创建URL对象,指定上传文件的URL地址。
2. 打开HTTP连接,并设置请求方法为POST。
3. 设置HTTP请求头部信息,包括Content-Type和boundary。
4. 设置HTTP请求体信息,包括上传文件的内容和分割线。
5. 读取服务器端返回的响应信息。
示例代码如下:
```java
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class FileUploader {
public static void main(String[] args) throws Exception {
String urlStr = "http://example.com/upload";
String filePath = "C:/test.txt";
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
String boundary = "---------------------------" + System.currentTimeMillis();
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
OutputStream out = conn.getOutputStream();
// 写入分割线
out.write(("--" + boundary + "\r\n").getBytes());
// 写入文件名
out.write(("Content-Disposition: form-data; name=\"file\"; filename=\"" + filePath + "\"\r\n").getBytes());
// 写入文件类型
out.write(("Content-Type: application/octet-stream\r\n").getBytes());
// 写入空行
out.write(("\r\n").getBytes());
// 写入文件内容
FileInputStream fileIn = new FileInputStream(filePath);
byte[] buffer = new byte[1024];
int len;
while ((len = fileIn.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
fileIn.close();
// 写入空行
out.write(("\r\n").getBytes());
// 写入分割线
out.write(("--" + boundary + "--\r\n").getBytes());
out.flush();
out.close();
// 读取响应内容
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
}
```
其中,filePath为需要上传的文件路径,urlStr为服务器端接收文件的URL地址。在示例代码中,我们使用了multipart/form-data类型的请求体格式,可以在请求头部信息中设置Content-Disposition、Content-Type等参数。同时,我们也设置了一个分割线boundary,用于分隔不同的请求体部分。最后,我们通过读取服务器端返回的响应信息,来获取上传文件的结果。
阅读全文