springmvc实现文件的上传

本文介绍了一个简单的文件上传功能实现过程,使用了commons-fileupload和commons-io库。通过HTML表单收集文件并提交至服务器,利用ServletFileUpload解析请求,再将文件写入指定位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要依赖的jar包,在pom.xml中添加commons-fileupload-1.2.1.jar、commons-io-2.0.jar(依赖包)

html页面代码如下:

<body>
 <form action="/projectms/test/simpleFileupload" method="post" enctype="multipart/form-data">  
    最简单的文件上传:<input type="file" name="fileupload"/>  
    描述:<input type="text" name="desc"/>  
    <input type="submit" value="submit"/>  
    </form>  
</body>

controller代码如下:

@RequestMapping("/simpleFileupload")
    public void  upload(HttpServletRequest request, HttpServletResponse response) throws IOException{


        DiskFileItemFactory factory=new DiskFileItemFactory();
        ServletFileUpload upload=new ServletFileUpload(factory);
        upload.setHeaderEncoding("utf-8");
        factory.setSizeThreshold(1024 * 500);//设置内存的临界值为500,如果超过则保存到/root/aaa目录下
        File linshiFile=new File("/root/aaa");
        factory.setRepository(linshiFile);
        upload.setSizeMax(1024 * 1024 * 5);
        try {
            List<FileItem> items=upload.parseRequest(request);
            for (FileItem item : items) {
                 if (item.isFormField()) {  
                        String name = item.getFieldName();  
                        String value = item.getString("utf-8");  
                        System.out.println(name + ": " + value);  

                }else {
                     String fileName = item.getName();  
                        long sizeInBytes = item.getSize();  
                        System.out.println(fileName);  
                        System.out.println(sizeInBytes);  

                        InputStream in = item.getInputStream();  
                        byte[] buffer = new byte[1024];  
                        int len = 0;  

                        fileName = "/root/bbb/" + fileName;//文件最终上传的位置  
                        System.out.println(fileName);  
                        OutputStream out = new FileOutputStream(fileName);  

                        while ((len = in.read(buffer)) != -1) {  
                            out.write(buffer, 0, len);  
                        }  

                        out.close();  
                        in.close();  
                    }  
                }  
        } catch (FileUploadException e) {
            e.printStackTrace();
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值