From a967dd6c790c37d18da00c9c9ab17ea780eb27b8 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 10 Apr 2020 17:16:21 +0800 Subject: [PATCH] fix code --- .../cn/hutool/core/net/multipart/UploadFile.java | 16 +++++++--------- .../cn/hutool/http/server/action/Action.java | 4 +++- .../http/server/handler/ActionHandler.java | 4 +++- .../cn/hutool/http/server/SimpleServerTest.java | 12 ++++++++++++ 4 files changed, 25 insertions(+), 11 deletions(-) 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 5e0386603..bf0b548fd 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 @@ -4,12 +4,9 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; -import java.io.BufferedInputStream; import java.io.BufferedOutputStream; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -20,11 +17,12 @@ import java.io.InputStream; * @author xiaoleilu */ public class UploadFile { + private static final String TMP_FILE_PREFIX = "hutool-"; private static final String TMP_FILE_SUFFIX = ".upload.tmp"; - private UploadFileHeader header; - private UploadSetting setting; + private final UploadFileHeader header; + private final UploadSetting setting; private int size = -1; @@ -69,7 +67,7 @@ public class UploadFile { */ public File write(String destPath) throws IOException { if (data != null || tempFile != null) { - return write(FileUtil.touch(destPath)); + return write(FileUtil.file(destPath)); } return null; } @@ -123,10 +121,10 @@ public class UploadFile { assertValid(); if (data != null) { - return new BufferedInputStream(new ByteArrayInputStream(data)); + return IoUtil.toBuffered(IoUtil.toStream(this.data)); } if (tempFile != null) { - return new BufferedInputStream(new FileInputStream(tempFile)); + return IoUtil.toBuffered(IoUtil.toStream(this.tempFile)); } return null; } @@ -190,7 +188,7 @@ public class UploadFile { // 处理内存文件 int memoryThreshold = setting.memoryThreshold; if (memoryThreshold > 0) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(memoryThreshold); + final ByteArrayOutputStream baos = new ByteArrayOutputStream(memoryThreshold); int written = input.copy(baos, memoryThreshold); data = baos.toByteArray(); if (written <= memoryThreshold) { diff --git a/hutool-http/src/main/java/cn/hutool/http/server/action/Action.java b/hutool-http/src/main/java/cn/hutool/http/server/action/Action.java index 2ef304eef..5e3604b80 100644 --- a/hutool-http/src/main/java/cn/hutool/http/server/action/Action.java +++ b/hutool-http/src/main/java/cn/hutool/http/server/action/Action.java @@ -3,6 +3,8 @@ package cn.hutool.http.server.action; import cn.hutool.http.server.HttpServerRequest; import cn.hutool.http.server.HttpServerResponse; +import java.io.IOException; + /** * 请求处理接口
* 当用户请求某个Path,则调用相应Action的doAction方法 @@ -18,5 +20,5 @@ public interface Action { * @param request 请求对象 * @param response 响应对象 */ - void doAction(HttpServerRequest request, HttpServerResponse response); + void doAction(HttpServerRequest request, HttpServerResponse response) throws IOException; } diff --git a/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java b/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java index e469ad3d0..f102c8314 100644 --- a/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java +++ b/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java @@ -6,6 +6,8 @@ import cn.hutool.http.server.action.Action; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; +import java.io.IOException; + /** * Action处理器,用于将HttpHandler转换为Action形式 * @@ -26,7 +28,7 @@ public class ActionHandler implements HttpHandler { } @Override - public void handle(HttpExchange httpExchange) { + public void handle(HttpExchange httpExchange) throws IOException { action.doAction( new HttpServerRequest(httpExchange), new HttpServerResponse(httpExchange) diff --git a/hutool-http/src/test/java/cn/hutool/http/server/SimpleServerTest.java b/hutool-http/src/test/java/cn/hutool/http/server/SimpleServerTest.java index afb3657ae..ddf9082ab 100644 --- a/hutool-http/src/test/java/cn/hutool/http/server/SimpleServerTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/server/SimpleServerTest.java @@ -1,5 +1,7 @@ package cn.hutool.http.server; +import cn.hutool.core.lang.Console; +import cn.hutool.core.net.multipart.UploadFile; import cn.hutool.http.ContentType; import cn.hutool.http.HttpUtil; @@ -18,6 +20,16 @@ public class SimpleServerTest { .addAction("/formTest", (request, response) -> response.write(request.getParams().toString(), ContentType.TEXT_PLAIN.toString()) ) + // 文件上传测试 + // http://localhost:8888/formTest?a=1&a=2&b=3 + .addAction("/file", (request, response) -> { + final UploadFile file = request.getMultipart().getFile("file"); + // 传入目录,默认读取HTTP头中的文件名然后创建文件 + file.write("d:/test/"); + Console.log("Write file to: d:/test/"); + response.write(request.getParams().toString(), ContentType.TEXT_PLAIN.toString()); + } + ) .start(); } }