最代码-泽正的gravatar头像
最代码-泽正 2017-11-28 13:22:20
spring mvc实现文件上传到虚拟路径

写在开始:项目中需要用到文件的上传与下载,于是做完之后将自己实现的代码写一篇博客。

首先:

在进行文件上传与下载之前我们先在本地电脑搭建一个文件服务器(即虚拟路径)。

第一步:找到tomcat的server.xml--><host>标签,添加如下配置:

<Context docBase="E:\upload\fileUpload" path="/upload" debug="0" reloadable="true"/>

其中doBase代表你本地电脑的真是路径,path代表的的虚拟路径,这个可以随便起名,然后你可以浏览器访问(注意:浏览器访问的是虚拟路径)即:http://localhost:8080/upload即可访问到你的真实路径。

到此一个存放文件的虚拟路径搭建完毕。

第二步:在maven项目的pom.xml中配置文件上传的依赖:

spring mvc实现文件上传到虚拟路径

第三步:使用springmvc实现文件的上传与下载,在springmvc.xml中配置:

spring mvc实现文件上传到虚拟路径

第四步:在controller中实现逻辑代码:本文只对多文件上传做了实现,多文件上传代码如下:

/**
     * Upload multiple file using Spring Controller
     */
    @RequestMapping(value = "/uploadMultipleFile", method = RequestMethod.POST, produces = "application/json;charset=utf8")
    @ResponseBody
    public Message uploadMultipleFileHandler(@RequestParam("file") MultipartFile[] files) throws IOException {
        Message msg = new Message();
        ArrayList<Integer> arr = new ArrayList<>();

        for (int i = 0; i < files.length; i++) {
            MultipartFile file = files[i]; 
            String fileName=file.getOriginalFilename();

            if (!file.isEmpty()) {
                InputStream in = null;
                OutputStream out = null;

                try {
                    String path = "E:/upload/fileUpload/" + file.getOriginalFilename();
                    File serverFile = new File(path);
                    in = file.getInputStream();
                    out = new FileOutputStream(serverFile);
                    byte[] b = new byte[1024];
                    int len = 0;
                    while ((len = in.read(b)) > 0) {
                        out.write(b, 0, len);
                    }
                    out.close();
                    in.close();
                    logger.info("Server File Location=" + serverFile.getAbsolutePath());

                } catch (Exception e) {
                    arr.add(i);
                } finally {
                    if (out != null) {
                        out.close();
                        out = null;
                    }

                    if (in != null) {
                        in.close();
                        in = null;
                    }
                }
            } else {
                arr.add(i);
            }


        }

        if(arr.size() > 0) {
            msg.setStatus(Status.ERROR);
            msg.setError("Files upload fail");
            msg.setErrorKys(arr);
        } else {
            msg.setStatus(Status.SUCCESS);
            msg.setStatusMsg("Files upload success");
        }
        return msg;
    }

}

最后文件上传就实现了。

第四步实现文件下载:

spring mvc实现文件上传到虚拟路径

至此,整个文件上传和文件下载就实现完了。

写在最后:勤能补拙,厚积薄发。

相关源码文件下载:spring mvc+bootstrap实现文件的上传实例


打赏

已有2人打赏

服部半藏00734的gravatar头像 最代码官方的gravatar头像
最近浏览
601601lmy  LV5 2023年7月19日
zxysss  LV3 2022年1月6日
zhengchenghui  LV5 2021年7月19日
malylian 2021年6月21日
暂无贡献等级
jianghuni 2021年6月2日
暂无贡献等级
_℃ 2021年3月31日
暂无贡献等级
最代码-宋家辉  LV61 2021年2月20日
xiaochaoge 2020年11月3日
暂无贡献等级
18629195654  LV3 2020年8月18日
lwp011  LV27 2020年7月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友