Merge remote-tracking branch 'upstream/v5-dev' into v5-dev

This commit is contained in:
lzpeng723 2020-12-04 09:29:22 +08:00
commit adce91e733
10 changed files with 55 additions and 19 deletions

View File

@ -1,6 +1,7 @@
package cn.hutool.core.io; package cn.hutool.core.io;
import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@ -90,7 +91,7 @@ public class FastByteArrayOutputStream extends OutputStream {
@Override @Override
public String toString() { 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 字符串 * @return 字符串
*/ */
public String toString(Charset charset) { public String toString(Charset charset) {
return new String(toByteArray(), charset); return new String(toByteArray(),
ObjectUtil.defaultIfNull(charset, CharsetUtil.defaultCharset()));
} }
} }

View File

@ -2,7 +2,6 @@ package cn.hutool.core.net.multipart;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.map.multi.ListValueMap; import cn.hutool.core.map.multi.ListValueMap;
import java.io.IOException; import java.io.IOException;
@ -78,7 +77,7 @@ public class MultipartFormData {
putFile(header.formFieldName, newFile); putFile(header.formFieldName, newFile);
} else { } else {
// 标准表单项 // 标准表单项
putParameter(header.formFieldName, IoUtil.read(input, charset)); putParameter(header.formFieldName, input.readString(charset));
} }
input.skipBytes(1); input.skipBytes(1);

View File

@ -1,5 +1,7 @@
package cn.hutool.core.net.multipart; package cn.hutool.core.net.multipart;
import cn.hutool.core.io.FastByteArrayOutputStream;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -144,7 +146,20 @@ public class MultipartRequestInputStream extends BufferedInputStream {
// ---------------------------------------------------------------- copy // ---------------------------------------------------------------- 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 输出流 * @param out 输出流
* @return 复制的字节数 * @return 复制的字节数

View File

@ -1,4 +1,4 @@
package cn.hutool.http.test; package cn.hutool.http;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IORuntimeException;

View File

@ -1,4 +1,4 @@
package cn.hutool.http.test; package cn.hutool.http;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;

View File

@ -1,4 +1,4 @@
package cn.hutool.http.test; package cn.hutool.http;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;

View File

@ -1,4 +1,4 @@
package cn.hutool.http.test; package cn.hutool.http;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console; import cn.hutool.core.lang.Console;

View File

@ -1,4 +1,4 @@
package cn.hutool.http.test; package cn.hutool.http;
import cn.hutool.core.lang.Console; import cn.hutool.core.lang.Console;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;

View File

@ -1,4 +1,4 @@
package cn.hutool.http.test; package cn.hutool.http;
import cn.hutool.core.lang.Console; import cn.hutool.core.lang.Console;
import cn.hutool.http.Header; import cn.hutool.http.Header;

View File

@ -1,23 +1,23 @@
package cn.hutool.http.test; package cn.hutool.http;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console; 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.Ignore;
import org.junit.Test; import org.junit.Test;
import java.io.File; import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
/** /**
* 文件上传单元测试 * 文件上传单元测试
* @author looly
* *
* @author looly
*/ */
public class UploadTest { public class UploadTest {
/** /**
* 多文件上传测试 * 多文件上传测试
*/ */
@ -35,7 +35,7 @@ public class UploadTest {
HttpResponse response = request.execute(); HttpResponse response = request.execute();
Console.log(response.body()); Console.log(response.body());
} }
@Test @Test
@Ignore @Ignore
public void uploadFileTest() { public void uploadFileTest() {
@ -48,4 +48,24 @@ public class UploadTest {
String result = HttpUtil.post("http://wthrcdn.etouch.cn/weather_mini", paramMap); String result = HttpUtil.post("http://wthrcdn.etouch.cn/weather_mini", paramMap);
System.out.println(result); System.out.println(result);
} }
@Test
@Ignore
public void uploadTest() {
//客户端
String url = "http://localhost:8888/file";
Path file = Paths.get("D:\\testBigData_upload.xlsx");
Map<String, String> headers = new HashMap<>(16);
headers.put("md5", "aaaaaaaa");
Map<String, Object> 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);
}
} }