diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FastByteArrayOutputStream.java b/hutool-core/src/main/java/cn/hutool/core/io/FastByteArrayOutputStream.java index a27cace9d..088db9ee0 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/FastByteArrayOutputStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FastByteArrayOutputStream.java @@ -1,6 +1,7 @@ package cn.hutool.core.io; import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.ObjectUtil; import java.io.IOException; import java.io.OutputStream; @@ -90,7 +91,7 @@ public class FastByteArrayOutputStream extends OutputStream { @Override public String toString() { - return new String(toByteArray()); + return toString(CharsetUtil.defaultCharset()); } /** @@ -104,11 +105,12 @@ public class FastByteArrayOutputStream extends OutputStream { /** * 转为字符串 - * @param charset 编码 + * @param charset 编码,null表示默认编码 * @return 字符串 */ public String toString(Charset charset) { - return new String(toByteArray(), charset); + return new String(toByteArray(), + ObjectUtil.defaultIfNull(charset, CharsetUtil.defaultCharset())); } } \ No newline at end of file diff --git a/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartFormData.java b/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartFormData.java index aa1ba0e79..76a12178f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartFormData.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartFormData.java @@ -2,7 +2,6 @@ package cn.hutool.core.net.multipart; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.io.IoUtil; import cn.hutool.core.map.multi.ListValueMap; import java.io.IOException; @@ -78,7 +77,7 @@ public class MultipartFormData { putFile(header.formFieldName, newFile); } else { // 标准表单项 - putParameter(header.formFieldName, IoUtil.read(input, charset)); + putParameter(header.formFieldName, input.readString(charset)); } input.skipBytes(1); diff --git a/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartRequestInputStream.java b/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartRequestInputStream.java index 08d7fbacb..12acf6b6e 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartRequestInputStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/multipart/MultipartRequestInputStream.java @@ -1,5 +1,7 @@ package cn.hutool.core.net.multipart; +import cn.hutool.core.io.FastByteArrayOutputStream; + import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -144,7 +146,20 @@ public class MultipartRequestInputStream extends BufferedInputStream { // ---------------------------------------------------------------- copy /** - * 全部字节流复制到out + * 读取字节流,直到下一个boundary + * + * @param charset 编码,null表示系统默认编码 + * @return 读取的字符串 + * @throws IOException 读取异常 + */ + public String readString(Charset charset) throws IOException { + final FastByteArrayOutputStream out = new FastByteArrayOutputStream(); + copy(out); + return out.toString(charset); + } + + /** + * 字节流复制到out,直到下一个boundary * * @param out 输出流 * @return 复制的字节数 diff --git a/hutool-http/src/test/java/cn/hutool/http/test/DownloadTest.java b/hutool-http/src/test/java/cn/hutool/http/DownloadTest.java similarity index 95% rename from hutool-http/src/test/java/cn/hutool/http/test/DownloadTest.java rename to hutool-http/src/test/java/cn/hutool/http/DownloadTest.java index 777ca9495..823f01d0c 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/DownloadTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/DownloadTest.java @@ -1,4 +1,4 @@ -package cn.hutool.http.test; +package cn.hutool.http; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/HtmlUtilTest.java similarity index 96% rename from hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java rename to hutool-http/src/test/java/cn/hutool/http/HtmlUtilTest.java index 66eb9421e..2103b71ce 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HtmlUtilTest.java @@ -1,4 +1,4 @@ -package cn.hutool.http.test; +package cn.hutool.http; import org.junit.Assert; import org.junit.Test; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java similarity index 95% rename from hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java rename to hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java index bf00b18ff..2dc9e487d 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java @@ -1,4 +1,4 @@ -package cn.hutool.http.test; +package cn.hutool.http; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.TimeInterval; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java similarity index 96% rename from hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java rename to hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java index 201605cae..3cc5d25c1 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpUtilTest.java @@ -1,4 +1,4 @@ -package cn.hutool.http.test; +package cn.hutool.http; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Console; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HttpsTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpsTest.java similarity index 91% rename from hutool-http/src/test/java/cn/hutool/http/test/HttpsTest.java rename to hutool-http/src/test/java/cn/hutool/http/HttpsTest.java index fca3e6cc1..a2eef2416 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HttpsTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpsTest.java @@ -1,4 +1,4 @@ -package cn.hutool.http.test; +package cn.hutool.http; import cn.hutool.core.lang.Console; import cn.hutool.core.thread.ThreadUtil; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/RestTest.java b/hutool-http/src/test/java/cn/hutool/http/RestTest.java similarity index 94% rename from hutool-http/src/test/java/cn/hutool/http/test/RestTest.java rename to hutool-http/src/test/java/cn/hutool/http/RestTest.java index 4a43c05c6..100d4e201 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/RestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/RestTest.java @@ -1,4 +1,4 @@ -package cn.hutool.http.test; +package cn.hutool.http; import cn.hutool.core.lang.Console; import cn.hutool.http.Header; diff --git a/hutool-http/src/test/java/cn/hutool/http/test/UploadTest.java b/hutool-http/src/test/java/cn/hutool/http/UploadTest.java similarity index 58% rename from hutool-http/src/test/java/cn/hutool/http/test/UploadTest.java rename to hutool-http/src/test/java/cn/hutool/http/UploadTest.java index 6a8e151bd..e0817c180 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/UploadTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/UploadTest.java @@ -1,23 +1,23 @@ -package cn.hutool.http.test; +package cn.hutool.http; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Console; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; import org.junit.Ignore; import org.junit.Test; import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.HashMap; +import java.util.Map; /** * 文件上传单元测试 - * @author looly * + * @author looly */ public class UploadTest { - + /** * 多文件上传测试 */ @@ -35,7 +35,7 @@ public class UploadTest { HttpResponse response = request.execute(); Console.log(response.body()); } - + @Test @Ignore public void uploadFileTest() { @@ -48,4 +48,24 @@ public class UploadTest { String result = HttpUtil.post("http://wthrcdn.etouch.cn/weather_mini", paramMap); System.out.println(result); } + + @Test + @Ignore + public void uploadTest() { + //客户端 + String url = "http://localhost:8888/file"; + Path file = Paths.get("D:\\testBigData_upload.xlsx"); + Map headers = new HashMap<>(16); + headers.put("md5", "aaaaaaaa"); + + Map params = new HashMap<>(16); + params.put("fileName", file.toFile().getName()); + params.put("file", file.toFile()); + HttpRequest httpRequest = HttpRequest.post(url) + .setChunkedStreamingMode(1024 * 1024) + .headerMap(headers, false) + .form(params); + HttpResponse httpResponse = httpRequest.execute(); + Console.log(httpResponse); + } }