SpringBoot 上传文件示例

示例效果:

前端代码:

<html>
<head><title>上传文件示例</title></head>
<body>
<h2>方式一:普通表单上传</h2>
<form action="/admin/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="文件上传"/>
</form>
<h2>方式二:fetch异步上传</h2>
<input type="file" id="fileInput"/>
<script type="text/javascript">
    const fileInput = document.getElementById('fileInput');
    // 当文件被选中时上传文件
    fileInput.addEventListener('change', function (e) {
        const file = e.target.files[0];
        const formData = new FormData();
        formData.append('file', file);
        fetch('/admin/upload', {
            method: 'POST',
            body: formData
        }).then(response => response.json()) // 如果API返回JSON,解析它
            .then(data => {
                document.getElementById('fileInput').value = "";
                alert(JSON.stringify(data));
            }) // 处理解析后的数据
            .catch(error => console.error('Error:', error)); // 处理错误
    });
</script>
<h2>方式三:文件和文本一起提交</h2>
<input type="text" id="text"><br/>
<input type="file" id="file"/>
<input type="button" value="提交" onclick="submitForm()">
<script type="text/javascript">
    function submitForm() {
        const text = document.getElementById('text').value;
        const file = document.getElementById('file').files[0];

        const formData = new FormData();
        formData.append('text', text);
        formData.append('file', file);
        fetch('/admin/upload', {
            method: 'POST',
            body: formData
        }).then(response => response.json())
            .then(data => {
                alert(JSON.stringify(data));
            });

    }
</script>
</body>
</html>

后台代码

 @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file, @RequestParam(value = "text", required = false) String text) {
        //文件保存路径为在D盘下的upload文件夹,可以按照自己的习惯修改
        String FILE_UPLOAD_PATH = "D:\\upload\\";
        //如果目录不存在,则创建目录
        Path path = Paths.get(FILE_UPLOAD_PATH);
        if (!Files.exists(path)) {
            try {
                Files.createDirectories(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (file.isEmpty()) {
            return "文件上传失败";
        }
        String fileName = file.getOriginalFilename();
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //生成文件名称通用方法
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
        Random r = new Random();
        StringBuilder tempName = new StringBuilder();
        tempName.append(sdf.format(new Date())).append(r.nextInt(100)).append(suffixName);
        String newFileName = tempName.toString();
        try {
            //保存文件
            byte[] bytes = file.getBytes();
            Path filePath = Paths.get(FILE_UPLOAD_PATH + newFileName);
            Files.write(filePath, bytes);

        } catch (IOException e) {
            e.printStackTrace();
        }
        var res = new JSONObject();
        res.put("flag", true);
        res.put("body", "上传成功");
        res.put("text", text);
        return res.toString();
    }

此处仅演示如何实现简单的文件上传,实际环境中,还需做相应的身份认证,权限控制等。

以下是一个Spring Boot文件上传示例代码: 1. 创建一个包含文件上传表单的HTML页面: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件上传示例</title> </head> <body> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <br/><br/> <input type="submit" value="上传" /> </form> </body> </html> ``` 2. 创建一个Spring Boot控制器,处理文件上传请求: ```java @RestController public class UploadController { @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return "请选择文件"; } // 获取文件名 String fileName = file.getOriginalFilename(); // 获取文件大小 long fileSize = file.getSize(); // 获取文件类型 String fileType = file.getContentType(); // TODO: 处理文件上传逻辑 return "文件上传成功"; } } ``` 在上传文件的方法中,我们首先检查文件是否为空,然后获取文件的基本信息,如文件名、大小和类型。接下来,我们可以编写自己的文件上传逻辑。 3. 配置文件上传大小限制: 为了防止上传大文件导致服务器资源耗尽,我们可以在application.properties文件中配置文件上传大小限制: ```properties spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` 在上述配置中,我们将文件上传大小限制为最大10MB。 4. 运行Spring Boot应用程序并测试文件上传功能: 现在,您可以启动Spring Boot应用程序并访问包含文件上传表单的HTML页面。选择一个文件并单击“上传”按钮,您应该能够看到“文件上传成功”消息。如果没有选择文件,则应该看到“请选择文件”消息。您还可以在上传文件的方法中添加更多逻辑,例如将文件保存到服务器上的特定位置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值