Solon一行代码上传文件,大文件异常org.smartboot.http.common.exception.HttpException: Payload Too Large 解决办法
写在前面
文件上传作为 Web 项目的必备功能,属于是项目开发必知必会的点了。不同组件也是有不同的写法,下面我们来看一下 国产信创组件 Solon 是怎么传文件的。
DemoController
接上一篇文章 Solon 初体验Solon init
package com.example.demo;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.annotation.Param;
import org.noear.solon.annotation.Post;
import org.noear.solon.core.handle.ModelAndView;
import org.noear.solon.core.handle.UploadedFile;
import java.io.File;
import java.io.IOException;
@Controller
public class DemoController {
@Post
@Mapping("/uploadFile")
public String uploadFile(UploadedFile file, String para1) throws IOException {
byte[] bytes = file.getContentAsBytes();
String newFileName = System.currentTimeMillis() + ".zip";
// 转为本地文件(注意用完删除临时文件)
File tempFile = FileUtil.writeBytes(bytes, new File(newFileName));
// FileUtil.del(tempFile);
return StrUtil.format("原文件名:{},新文件名:{},接收参数:{}", file.getName(), newFileName, para1);
}
}
简简单单,一个 Post 方法搞定,只需要一个 UploadedFile 对象即可,如果需要接收其他参数,直接加参数即可。
测试API
一个接口轻松搞定,测试注意 para1 参数和接口的接收参数一致,文件 file 的值要选择 File 类型。
愉快的提交测试,测试随手一个大文件,后台直接报错:
org.smartboot.http.common.exception.HttpException: Payload Too Large
Solon 上传文件请求默认最大限制2mb,超过限制就会报错,按照官方参数配置说明
配置说明
需要在配置文件中修改默认上传请求限制:
server.request.maxBodySize: 100mb
再次测试
上传大文件,一把通过。你也来试试吧!