直接用java.net的HttpURLConnection 发请求上传多个文件
使用场景:调用写好的接口上传文件,参数类型为file数组时可用
请求携带参数可根据自己需要更改
package com.xxx;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class FileUploadExample {
public static void main(String[] args) {
String targetURL = "#"; //上传的地址
String charset = "UTF-8";
File file1 = new File("#"); //文件目录。 使用前端上传的话可以将MultipartFile转为流
File file2 = new File("cE:/Users/Desktop/#.xlsx");
double parameter = 666.666; // 携带的参数(可不传)
try {
// Create connection
URL url = new URL(targetURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("accept", "application/json");
connection.setRequestProperty("Content-Type", "multipart/form-data");
//connection.setRequestProperty("Token", "xxxxx");
connection.setDoOutput(true);
// Create multipart form-data
String boundary = Long.toHexString(System.currentTimeMillis());
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) {
// Upload file 1
wr.writeBytes("--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file1.getName() + "\"\r\n");
wr.writeBytes("Content-Type: application/pdf\r\n\r\n");
try (FileInputStream fileInputStream = new FileInputStream(file1)) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
wr.write(buffer, 0, bytesRead);
}
}
wr.writeBytes("\r\n");
// Upload file 2
wr.writeBytes("--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file2.getName() + "\"\r\n");
wr.writeBytes("Content-Type: application/pdf\r\n\r\n");
try (FileInputStream fileInputStream = new FileInputStream(file2)) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
wr.write(buffer, 0, bytesRead);
}
}
wr.writeBytes("\r\n");
// Upload parameter
wr.writeBytes("--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"parameter\"\r\n\r\n");
wr.writeBytes(Double.toString(parameter) + "\r\n");
// End of multipart form-data
wr.writeBytes("--" + boundary + "--\r\n");
}
// Get the response
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
System.out.println(response.toString());
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}