瀏覽代碼

add support for multipart uploads

tags/2.0.1
Jonathan Cobb 4 年之前
父節點
當前提交
50ac0bf0dd
共有 2 個文件被更改,包括 18 次插入6 次删除
  1. +2
    -0
      src/main/java/org/cobbzilla/util/http/HttpRequestBean.java
  2. +16
    -6
      src/main/java/org/cobbzilla/util/http/HttpUtil.java

+ 2
- 0
src/main/java/org/cobbzilla/util/http/HttpRequestBean.java 查看文件

@@ -128,6 +128,8 @@ public class HttpRequestBean {
}
public boolean hasContentType () { return getContentType() != null; }

public String contentType () { return hasContentType() ? getContentType().getMimeType() : null; }

@JsonIgnore public Long getContentLength() {
if (!hasHeaders()) return null;
final String value = getFirstHeaderValue(CONTENT_LENGTH);


+ 16
- 6
src/main/java/org/cobbzilla/util/http/HttpUtil.java 查看文件

@@ -35,6 +35,7 @@ import static com.google.common.net.HttpHeaders.CONTENT_DISPOSITION;
import static org.apache.http.HttpHeaders.*;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;
import static org.cobbzilla.util.daemon.ZillaRuntime.hexnow;
import static org.cobbzilla.util.http.HttpContentTypes.MULTIPART_FORM_DATA;
import static org.cobbzilla.util.http.HttpContentTypes.contentType;
import static org.cobbzilla.util.http.HttpMethods.*;
import static org.cobbzilla.util.http.HttpStatusCodes.NO_CONTENT;
@@ -80,15 +81,15 @@ public class HttpUtil {
return urlConnection.getInputStream();
}

public static InputStream post (String urlString, InputStream data, Map<String, String> headers, Map<String, String> headers2) throws IOException {
return upload(urlString, POST, data, headers, headers2);
public static InputStream post (String urlString, InputStream data, String multipartFileName, Map<String, String> headers, Map<String, String> headers2) throws IOException {
return upload(urlString, POST, multipartFileName, data, headers, headers2);
}

public static InputStream put (String urlString, InputStream data, Map<String, String> headers, Map<String, String> headers2) throws IOException {
return upload(urlString, PUT, data, headers, headers2);
public static InputStream put (String urlString, InputStream data, String multipartFileName, Map<String, String> headers, Map<String, String> headers2) throws IOException {
return upload(urlString, PUT, multipartFileName, data, headers, headers2);
}

public static InputStream upload (String urlString, String method, InputStream data, Map<String, String> headers, Map<String, String> headers2) throws IOException {
public static InputStream upload (String urlString, String method, String multipartFileName, InputStream data, Map<String, String> headers, Map<String, String> headers2) throws IOException {
final URL url = new URL(urlString);
final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(method);
@@ -97,7 +98,16 @@ public class HttpUtil {
if (data != null) {
urlConnection.setDoOutput(true);
final OutputStream upload = urlConnection.getOutputStream();
IOUtils.copyLarge(data, upload);
if (multipartFileName != null) {
urlConnection.setRequestProperty(CONTENT_TYPE, MULTIPART_FORM_DATA);
final MultipartEntityBuilder mb = MultipartEntityBuilder.create();
mb.addBinaryBody(multipartFileName, data);
mb.build().writeTo(upload);

} else {
IOUtils.copyLarge(data, upload);
}
upload.close();
}
return urlConnection.getInputStream();
}


Loading…
取消
儲存