diff --git a/CHANGELOG.md b/CHANGELOG.md
index f33b0a485..46734c020 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,16 @@
-------------------------------------------------------------------------------------------------------------
+# 5.5.3 (2020-12-02)
+
+### 新特性
+* 【core 】 IdcardUtil增加行政区划83(issue#1277@Github)
+* 【core 】 multipart中int改为long,解决大文件上传越界问题(issue#I27WZ3@Gitee)
+
+### Bug修复
+
+-------------------------------------------------------------------------------------------------------------
+
# 5.5.2 (2020-12-01)
### 新特性
diff --git a/README-EN.md b/README-EN.md
index d985be568..472d6b799 100644
--- a/README-EN.md
+++ b/README-EN.md
@@ -125,19 +125,19 @@ Each module can be introduced individually, or all modules can be introduced by
cn.hutool
hutool-all
- 5.5.2
+ 5.5.3
```
### Gradle
```
-compile 'cn.hutool:hutool-all:5.5.2'
+compile 'cn.hutool:hutool-all:5.5.3'
```
## Download
-- [Maven1](https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.5.2/)
-- [Maven2](http://repo2.maven.org/maven2/cn/hutool/hutool-all/5.5.2/)
+- [Maven1](https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.5.3/)
+- [Maven2](http://repo2.maven.org/maven2/cn/hutool/hutool-all/5.5.3/)
> note:
> Hutool 5.x supports JDK8+ and is not tested on Android platforms, and cannot guarantee that all tool classes or tool methods are available.
diff --git a/README.md b/README.md
index 7a4cf2e6e..76d6ef33f 100644
--- a/README.md
+++ b/README.md
@@ -123,21 +123,21 @@ Hutool的存在就是为了减少代码搜索成本,避免网络上参差不
cn.hutool
hutool-all
- 5.5.2
+ 5.5.3
```
### Gradle
```
-compile 'cn.hutool:hutool-all:5.5.2'
+compile 'cn.hutool:hutool-all:5.5.3'
```
### 非Maven项目
点击以下任一链接,下载`hutool-all-X.X.X.jar`即可:
-- [Maven中央库1](https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.5.2/)
-- [Maven中央库2](http://repo2.maven.org/maven2/cn/hutool/hutool-all/5.5.2/)
+- [Maven中央库1](https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.5.3/)
+- [Maven中央库2](http://repo2.maven.org/maven2/cn/hutool/hutool-all/5.5.3/)
> 注意
> Hutool 5.x支持JDK8+,对Android平台没有测试,不能保证所有工具类或工具方法可用。
diff --git a/bin/version.txt b/bin/version.txt
index e4d41db98..d4e50692a 100755
--- a/bin/version.txt
+++ b/bin/version.txt
@@ -1 +1 @@
-5.5.2
+5.5.3
diff --git a/docs/js/version.js b/docs/js/version.js
index 352759200..f133da001 100644
--- a/docs/js/version.js
+++ b/docs/js/version.js
@@ -1 +1 @@
-var version = '5.5.2'
\ No newline at end of file
+var version = '5.5.3'
\ No newline at end of file
diff --git a/hutool-all/pom.xml b/hutool-all/pom.xml
index 4e5037e23..ae2daea7e 100644
--- a/hutool-all/pom.xml
+++ b/hutool-all/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-all
diff --git a/hutool-aop/pom.xml b/hutool-aop/pom.xml
index 1aad8de37..a5db73731 100644
--- a/hutool-aop/pom.xml
+++ b/hutool-aop/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-aop
@@ -19,7 +19,7 @@
3.3.0
- 5.2.9.RELEASE
+ 5.3.1
diff --git a/hutool-bloomFilter/pom.xml b/hutool-bloomFilter/pom.xml
index 9a22c2e8d..e1ad8127b 100644
--- a/hutool-bloomFilter/pom.xml
+++ b/hutool-bloomFilter/pom.xml
@@ -7,7 +7,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-bloomFilter
diff --git a/hutool-bom/pom.xml b/hutool-bom/pom.xml
index 1bb69eef8..2e1791ca9 100644
--- a/hutool-bom/pom.xml
+++ b/hutool-bom/pom.xml
@@ -7,7 +7,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-bom
diff --git a/hutool-cache/pom.xml b/hutool-cache/pom.xml
index 84e9b2db6..d24ef2f04 100644
--- a/hutool-cache/pom.xml
+++ b/hutool-cache/pom.xml
@@ -7,7 +7,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-cache
diff --git a/hutool-captcha/pom.xml b/hutool-captcha/pom.xml
index b8a0a80de..1ae88a98f 100644
--- a/hutool-captcha/pom.xml
+++ b/hutool-captcha/pom.xml
@@ -7,7 +7,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-captcha
diff --git a/hutool-captcha/src/main/java/cn/hutool/captcha/GifCaptcha.java b/hutool-captcha/src/main/java/cn/hutool/captcha/GifCaptcha.java
index 9c03f6fa6..2d996693c 100644
--- a/hutool-captcha/src/main/java/cn/hutool/captcha/GifCaptcha.java
+++ b/hutool-captcha/src/main/java/cn/hutool/captcha/GifCaptcha.java
@@ -38,7 +38,7 @@ public class GifCaptcha extends AbstractCaptcha {
* @param height 验证码高度
*/
public GifCaptcha(int width, int height) {
- this(width, height, 100);
+ this(width, height, 5);
}
/**
diff --git a/hutool-core/pom.xml b/hutool-core/pom.xml
index ca77d8222..d2d3282fe 100644
--- a/hutool-core/pom.xml
+++ b/hutool-core/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-core
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 b6162dc98..aa1ba0e79 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,9 +2,9 @@ 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.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
@@ -78,10 +78,7 @@ public class MultipartFormData {
putFile(header.formFieldName, newFile);
} else {
// 标准表单项
- ByteArrayOutputStream fbos = new ByteArrayOutputStream(1024);
- input.copy(fbos);
- String value = (charset != null) ? new String(fbos.toByteArray(), charset) : new String(fbos.toByteArray());
- putParameter(header.formFieldName, value);
+ putParameter(header.formFieldName, IoUtil.read(input, 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 8dc5df6b0..08d7fbacb 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
@@ -171,7 +171,7 @@ public class MultipartRequestInputStream extends BufferedInputStream {
* @return 复制的字节数
* @throws IOException 读取异常
*/
- public int copy(OutputStream out, int limit) throws IOException {
+ public int copy(OutputStream out, long limit) throws IOException {
int count = 0;
while (true) {
byte b = readByte();
diff --git a/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFile.java b/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFile.java
index 4cc456934..3734ca11b 100644
--- a/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFile.java
+++ b/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFile.java
@@ -7,7 +7,6 @@ import cn.hutool.core.util.StrUtil;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -24,7 +23,7 @@ public class UploadFile {
private final UploadFileHeader header;
private final UploadSetting setting;
- private int size = -1;
+ private long size = -1;
// 文件流(小文件位于内存中)
private byte[] data;
@@ -150,7 +149,7 @@ public class UploadFile {
/**
* @return 上传文件的大小,> 0 表示未上传
*/
- public int size() {
+ public long size() {
return size;
}
@@ -200,13 +199,13 @@ public class UploadFile {
// 处理硬盘文件
tempFile = FileUtil.createTempFile(TMP_FILE_PREFIX, TMP_FILE_SUFFIX, FileUtil.touch(setting.tmpUploadPath), false);
- BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
+ final BufferedOutputStream out = FileUtil.getOutputStream(this.tempFile);
if (data != null) {
size = data.length;
out.write(data);
data = null; // not needed anymore
}
- int maxFileSize = setting.maxFileSize;
+ final long maxFileSize = setting.maxFileSize;
try {
if (maxFileSize == -1) {
size += input.copy(out);
@@ -236,14 +235,14 @@ public class UploadFile {
* @return 是否为允许的扩展名
*/
private boolean isAllowedExtension() {
- String[] exts = setting.fileExts;
+ final String[] exts = setting.fileExts;
boolean isAllow = setting.isAllowFileExts;
if (exts == null || exts.length == 0) {
// 如果给定扩展名列表为空,当允许扩展名时全部允许,否则全部禁止
return isAllow;
}
- String fileNameExt = FileUtil.extName(this.getFileName());
+ final String fileNameExt = FileUtil.extName(this.getFileName());
for (String fileExtension : setting.fileExts) {
if (fileNameExt.equalsIgnoreCase(fileExtension)) {
return isAllow;
diff --git a/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFileHeader.java b/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFileHeader.java
index 5c1770d9b..8f769dd97 100644
--- a/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFileHeader.java
+++ b/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadFileHeader.java
@@ -31,7 +31,8 @@ public class UploadFileHeader {
// ---------------------------------------------------------------- public interface
/**
- * Returns true
if uploaded data are correctly marked as a file. This is true if header contains string 'filename'.
+ * Returns {@code true} if uploaded data are correctly marked as a file.
+ * This is true if header contains string 'filename'.
*
* @return 是否为文件
*/
diff --git a/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadSetting.java b/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadSetting.java
index 872bb7010..5af183ad6 100644
--- a/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadSetting.java
+++ b/hutool-core/src/main/java/cn/hutool/core/net/multipart/UploadSetting.java
@@ -9,7 +9,7 @@ package cn.hutool.core.net.multipart;
public class UploadSetting {
/** 最大文件大小,默认无限制 */
- protected int maxFileSize = -1;
+ protected long maxFileSize = -1;
/** 文件保存到内存的边界 */
protected int memoryThreshold = 8192;
/** 临时文件目录 */
@@ -26,7 +26,7 @@ public class UploadSetting {
/**
* @return 获得最大文件大小,-1表示无限制
*/
- public int getMaxFileSize() {
+ public long getMaxFileSize() {
return maxFileSize;
}
@@ -35,7 +35,7 @@ public class UploadSetting {
*
* @param maxFileSize 最大文件大小
*/
- public void setMaxFileSize(int maxFileSize) {
+ public void setMaxFileSize(long maxFileSize) {
this.maxFileSize = maxFileSize;
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java
index 7fdfb75e5..4502ba103 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java
@@ -83,6 +83,8 @@ public class IdcardUtil {
CITY_CODES.put("71", "台湾");
CITY_CODES.put("81", "香港");
CITY_CODES.put("82", "澳门");
+ //issue#1277,台湾身份证号码以83开头,但是行政区划为71
+ CITY_CODES.put("83", "台湾");
CITY_CODES.put("91", "国外");
TW_FIRST_CODE.put("A", 10);
@@ -354,7 +356,7 @@ public class IdcardUtil {
sum = sum + Integer.parseInt(String.valueOf(c)) * iflag;
iflag--;
}
- if ("A".equals(end.toUpperCase())) {
+ if ("A".equalsIgnoreCase(end)) {
sum += 10;
} else {
sum += Integer.parseInt(end);
diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java
index fa7a0aead..56ec38dac 100644
--- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java
@@ -4,7 +4,6 @@ import cn.hutool.core.annotation.Alias;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.bean.copier.ValueProvider;
import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.lang.Console;
import cn.hutool.core.map.MapUtil;
import lombok.Data;
import lombok.Getter;
diff --git a/hutool-cron/pom.xml b/hutool-cron/pom.xml
index f072c2e29..7ea67cc03 100644
--- a/hutool-cron/pom.xml
+++ b/hutool-cron/pom.xml
@@ -7,7 +7,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-cron
diff --git a/hutool-crypto/pom.xml b/hutool-crypto/pom.xml
index 51db31c7c..37a05cd4c 100644
--- a/hutool-crypto/pom.xml
+++ b/hutool-crypto/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-crypto
diff --git a/hutool-crypto/src/main/java/cn/hutool/crypto/SecureUtil.java b/hutool-crypto/src/main/java/cn/hutool/crypto/SecureUtil.java
index 07936cddb..78f97b2df 100644
--- a/hutool-crypto/src/main/java/cn/hutool/crypto/SecureUtil.java
+++ b/hutool-crypto/src/main/java/cn/hutool/crypto/SecureUtil.java
@@ -626,7 +626,7 @@ public final class SecureUtil {
* 创建HMac对象,调用digest方法可获得hmac值
*
* @param algorithm {@link HmacAlgorithm}
- * @param key 密钥,如果为null
生成随机密钥
+ * @param key 密钥,如果为{@code null}生成随机密钥
* @return {@link HMac}
* @since 3.3.0
*/
@@ -638,7 +638,7 @@ public final class SecureUtil {
* 创建HMac对象,调用digest方法可获得hmac值
*
* @param algorithm {@link HmacAlgorithm}
- * @param key 密钥,如果为null
生成随机密钥
+ * @param key 密钥,如果为{@code null}生成随机密钥
* @return {@link HMac}
* @since 3.0.3
*/
@@ -650,7 +650,7 @@ public final class SecureUtil {
* 创建HMac对象,调用digest方法可获得hmac值
*
* @param algorithm {@link HmacAlgorithm}
- * @param key 密钥{@link SecretKey},如果为null
生成随机密钥
+ * @param key 密钥{@link SecretKey},如果为{@code null}生成随机密钥
* @return {@link HMac}
* @since 3.0.3
*/
@@ -664,7 +664,7 @@ public final class SecureUtil {
* HmacMD5加密:hmacMd5(key).digest(data)
* HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)
*
- * @param key 加密密钥,如果为null
生成随机密钥
+ * @param key 加密密钥,如果为{@code null}生成随机密钥
* @return {@link HMac}
* @since 3.3.0
*/
@@ -678,7 +678,7 @@ public final class SecureUtil {
* HmacMD5加密:hmacMd5(key).digest(data)
* HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)
*
- * @param key 加密密钥,如果为null
生成随机密钥
+ * @param key 加密密钥,如果为{@code null}生成随机密钥
* @return {@link HMac}
*/
public static HMac hmacMd5(byte[] key) {
@@ -703,7 +703,7 @@ public final class SecureUtil {
* HmacSHA1加密:hmacSha1(key).digest(data)
* HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)
*
- * @param key 加密密钥,如果为null
生成随机密钥
+ * @param key 加密密钥,如果为{@code null}生成随机密钥
* @return {@link HMac}
* @since 3.3.0
*/
@@ -717,7 +717,7 @@ public final class SecureUtil {
* HmacSHA1加密:hmacSha1(key).digest(data)
* HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)
*
- * @param key 加密密钥,如果为null
生成随机密钥
+ * @param key 加密密钥,如果为{@code null}生成随机密钥
* @return {@link HMac}
*/
public static HMac hmacSha1(byte[] key) {
diff --git a/hutool-crypto/src/main/java/cn/hutool/crypto/digest/Digester.java b/hutool-crypto/src/main/java/cn/hutool/crypto/digest/Digester.java
index bddc47151..eb749e080 100644
--- a/hutool-crypto/src/main/java/cn/hutool/crypto/digest/Digester.java
+++ b/hutool-crypto/src/main/java/cn/hutool/crypto/digest/Digester.java
@@ -1,14 +1,5 @@
package cn.hutool.crypto.digest;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.nio.charset.Charset;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.Provider;
-
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
@@ -19,6 +10,15 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.CryptoException;
import cn.hutool.crypto.SecureUtil;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.nio.charset.Charset;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+
/**
* 摘要算法
* 注意:此对象实例化后为非线程安全!
@@ -84,7 +84,7 @@ public class Digester implements Serializable {
*
* @param algorithm 算法
* @param provider 算法提供者,null表示JDK默认,可以引入Bouncy Castle等来提供更多算法支持
- * @return {@link Digester}
+ * @return Digester
* @throws CryptoException Cause by IOException
*/
public Digester init(String algorithm, Provider provider) {
diff --git a/hutool-db/pom.xml b/hutool-db/pom.xml
index 8dc8a3d3b..b4afce592 100644
--- a/hutool-db/pom.xml
+++ b/hutool-db/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-db
diff --git a/hutool-dfa/pom.xml b/hutool-dfa/pom.xml
index 478adc711..61e62b9b7 100644
--- a/hutool-dfa/pom.xml
+++ b/hutool-dfa/pom.xml
@@ -7,7 +7,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-dfa
diff --git a/hutool-extra/pom.xml b/hutool-extra/pom.xml
index 14841d742..524fe3c25 100644
--- a/hutool-extra/pom.xml
+++ b/hutool-extra/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-extra
@@ -378,7 +378,7 @@
com.googlecode.aviator
aviator
- 5.1.4
+ 5.2.1
compile
true
diff --git a/hutool-http/pom.xml b/hutool-http/pom.xml
index b7aaf9361..fd3c92669 100644
--- a/hutool-http/pom.xml
+++ b/hutool-http/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-http
diff --git a/hutool-json/pom.xml b/hutool-json/pom.xml
index b35254b3c..e4b4f15e5 100644
--- a/hutool-json/pom.xml
+++ b/hutool-json/pom.xml
@@ -9,7 +9,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool-json
diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java
index 0afc46d02..beab37210 100644
--- a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java
+++ b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java
@@ -208,7 +208,7 @@ public class JSONArray implements JSON, JSONGetter, List
diff --git a/pom.xml b/pom.xml
index 37edd0174..66c86ae69 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
cn.hutool
hutool-parent
- 5.5.2-SNAPSHOT
+ 5.5.3-SNAPSHOT
hutool
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
https://github.com/looly/hutool