java httpUrlConnection 实现上传多个文件
要使用Java的HttpURLConnection实现上传多个文件,你可以按以下步骤进行操作:
导入必要的类:
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL;
创建一个方法来处理文件上传: ```java public void uploadFiles(String url, String[] filePaths) throws IOException { String boundary = "===" + System.currentTimeMillis() + "==="; String lineBreak = "\r\n";
URL uploadUrl = new URL(url); HttpURLConnection connection = (HttpURLConnection) uploadUrl.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
OutputStream outputStream = connection.getOutputStream(); for (String filePath : filePaths) { File file = new File(filePath); FileInputStream fileInputStream = new FileInputStream(file); // 写入文件开始分隔符 outputStream.write((lineBreak + "--" + boundary + lineBreak).getBytes()); // 写入Content-Disposition头部信息 outputStream.write(("Content-Disposition: form-data; name="file"; filename="" + file.getName() + """ + lineBreak).getBytes()); outputStream.write(("Content-Type: application/octet-stream" + lineBreak).getBytes()); // 写入空行 outputStream.write(lineBreak.getBytes()); // 写入文件内容 byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = fileInputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } fileInputStream.close(); }
// 写入结束分隔符 outputStream.write((lineBreak + "--" + boundary + "--" + lineBreak).getBytes()); outputStream.flush(); outputStream.close();
// 获取响应 int responseCode = connection.getResponseCode(); // 根据需要进行处理响应结果
connection.disconnect();
}
3. 调用`uploadFiles`方法,传入要上传的文件路径和目标URL:
```java
String url = "http://example.com/upload";
String[] filePaths = {"/path/to/file1", "/path/to/file2"};
uploadFiles(url, filePaths);
在这个示例中,我们首先创建了一个URL对象,并打开了一个HttpURLConnection。然后,我们设置了请求方法为POST,并设置了Content-Type为multipart/form-data,这是用于上传文件的常用类型。
接下来,我们逐个处理每个文件。我们首先写入文件开始的分隔符,并设置文件的Content-Disposition头部信息。然后,我们写入文件的内容。最后,我们写入文件结束的分隔符。
在写入完所有文件后,我们将输出流刷新并关闭连接。然后,我们可以根据需要处理服务器的响应。
这是一个简单的示例,你可以根据需要进行修改和扩展。确保在实际应用中进行适当的异常处理和错误处理。
相关推荐















