feat:upload file

This commit is contained in:
zzs 2024-11-07 17:36:42 +08:00
parent a370cf0873
commit 4cc03bc304

View File

@ -13,10 +13,11 @@ import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*; import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
@ -39,9 +40,13 @@ import javax.annotation.Resource;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.*;
@ -184,15 +189,13 @@ public class ProxyService {
URI newUri = new URI(target); URI newUri = new URI(target);
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(newUri); HttpPost httpPost = new HttpPost(newUri);
MultipartEntityBuilder builder = MultipartEntityBuilder.create(); MultipartEntity builder = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, "----WebKitFormBoundaryBHp47SjGMxpHX0X6--", Charset.forName("UTF-8"));
FileBody fileBody = new FileBody(transferToFile(file)); // FileBody fileBody = new FileBody(transferToFile(file));
builder.addPart("file", fileBody); // builder.addPart("file", fileBody);
HttpEntity multipartEntity = builder.build(); File transferToFile = transferToFile(file);
httpPost.setEntity(multipartEntity); builder.addPart("file", new InputStreamBody(new FileInputStream(transferToFile), file.getOriginalFilename()));
Header[] requestHeader = httpPost.getAllHeaders(); httpPost.addHeader("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundaryBHp47SjGMxpHX0X6--");
for (Header header : requestHeader) { httpPost.setEntity(builder);
log.info("request Header: {}: {}", header.getName(), header.getValue());
}
HttpResponse kResponse = httpClient.execute(httpPost); HttpResponse kResponse = httpClient.execute(httpPost);
Header[] headers = kResponse.getAllHeaders(); Header[] headers = kResponse.getAllHeaders();
for (Header header : headers) { for (Header header : headers) {
@ -205,6 +208,11 @@ public class ProxyService {
log.info("receive json response: {}", jsonStr); log.info("receive json response: {}", jsonStr);
JSONObject jsonObject = JSON.parseObject(jsonStr); JSONObject jsonObject = JSON.parseObject(jsonStr);
Header[] requestHeader = httpPost.getAllHeaders();
for (Header header : requestHeader) {
log.info("request Header: {}: {}", header.getName(), header.getValue());
}
if (jsonObject.containsKey("url")) { if (jsonObject.containsKey("url")) {
return jsonObject.getString("url"); return jsonObject.getString("url");
} }