浏览代码

add default value for content-type

Looly 6 年之前
父节点
当前提交
96e377f414

+ 1 - 0
CHANGELOG.md

@@ -17,6 +17,7 @@
 * 【core】        ZipUtil增加FileFilter参数的重载,支持文件过滤(issue#I11RTP@Gitee)
 * 【http】         HttpRequest增加setChunkedStreamingMode方法(issue#525@Github)
 * 【setting】     SettingLoader支持自定义分隔符
+* 【http】         Content-Type添加默认值(issue#I11YHI@Gitee)
 
 ### Bug修复
 * 【core】         修复NetUtil.getUsableLocalPort问题(pr#69@Gitee)

+ 2 - 1
hutool-http/src/main/java/cn/hutool/http/HttpRequest.java

@@ -1136,7 +1136,8 @@ public class HttpRequest extends HttpBase<HttpRequest> {
 			final StringBuilder builder = StrUtil.builder().append("--").append(BOUNDARY).append(StrUtil.CRLF);
 			final String fileName = resource.getName();
 			builder.append(StrUtil.format(CONTENT_DISPOSITION_FILE_TEMPLATE, formFieldName, ObjectUtil.defaultIfNull(fileName, formFieldName)));
-			builder.append(StrUtil.format(CONTENT_TYPE_FILE_TEMPLATE, HttpUtil.getMimeType(fileName)));
+			// 根据name的扩展名指定互联网媒体类型,默认二进制流数据
+			builder.append(StrUtil.format(CONTENT_TYPE_FILE_TEMPLATE, HttpUtil.getMimeType(fileName, "application/octet-stream")));
 			IoUtil.write(out, this.charset, false, builder);
 			InputStream in = null;
 			try {

+ 14 - 0
hutool-http/src/main/java/cn/hutool/http/HttpUtil.java

@@ -26,6 +26,7 @@ import cn.hutool.core.io.StreamProgress;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.text.StrBuilder;
 import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.URLUtil;
@@ -726,6 +727,19 @@ public class HttpUtil {
 		}
 		return content;
 	}
+	
+	/**
+	 * 根据文件扩展名获得MimeType
+	 * 
+	 * @param filePath 文件路径或文件名
+	 * @param defaultValue 当获取MimeType为null时的默认值
+	 * @return MimeType
+	 * @see FileUtil#getMimeType(String)
+	 * @since 4.6.5
+	 */
+	public static String getMimeType(String filePath, String defaultValue) {
+		return ObjectUtil.defaultIfNull(getMimeType(filePath), defaultValue);
+	}
 
 	/**
 	 * 根据文件扩展名获得MimeType

+ 6 - 0
hutool-http/src/test/java/cn/hutool/http/test/HttpUtilTest.java

@@ -263,4 +263,10 @@ public class HttpUtilTest {
 		String encodeResult = HttpUtil.normalizeParams("参数", CharsetUtil.CHARSET_UTF_8);
 		Assert.assertEquals("%E5%8F%82%E6%95%B0", encodeResult);
 	}
+	
+	@Test
+	public void getMimeTypeTest() {
+		String mimeType = HttpUtil.getMimeType("aaa.aaa");
+		Assert.assertNull(mimeType);
+	}
 }