文档章节

Spring 上传文件后台

青_松
 青_松
发布于 2013/08/22 10:55
字数 483
阅读 109
收藏 2

@Controller
@RequestMapping(value = BaseController.FRONT_PATH + "/express/driver")
public class DriverFileUploadController {


    @Autowired
    private PreferencesManager manager;


    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public
    @ResponseBody
    CommonResp uploadHeadFile(ModelMap model) throws java.lang.Exception {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        CommonResp commonResp = new CommonResp();
        Preferences pref = manager.getSystemPreferenceFor("config");
        String realPath = pref.get("upload_dir", "/upload/");
        Boolean isRelative = Boolean.valueOf(pref.get("upload_dir_relative", ""));  //选择是否是存储绝对路径true:相对路径


        System.out.println(realPath);
        List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (!item.isFormField()) {
                String fileName = item.getName();
                InputStream content = item.getInputStream();
                // Do whatever with the content InputStream.
                //这里处理文件流
                if (isRelative) {
                    String relativePath = request.getSession().getServletContext().getRealPath(realPath);
                    File driverFolder = creatFolder(relativePath, item.getName().replace(" ", ""));
                    FileUtils.copyInputStreamToFile(content, driverFolder);
                }else{
                    File driverFolder = creatFolder(realPath, item.getName().replace(" ", ""));
                    FileUtils.copyInputStreamToFile(content, driverFolder);
                }


            }
        }
        commonResp.setContext("上传成功");
        return commonResp;
    }


    /**
     * 这里只创建一个realPath 如果每个用户都创建一个需要用下边的注释的方法
     *
     * @param realpath
     * @param photoName
     * @return  
     */
    private File creatFolder(String realpath, String photoName) {
        File file = null;
        File driverFolder = new File(realpath);
        String[] eachFolder = photoName.split("\\.");
        if (driverFolder.exists()) {
            file = new File(driverFolder, eachFolder[0] + "." + eachFolder[1]);
        } else {
            file = new File(driverFolder, eachFolder[0] + "." + eachFolder[1]);
        }
        return file;
    }
}
/**
 * 检测与创建一级、二级文件夹、文件名
 * 这里我通过传入的两个字符串来做一级文件夹和二级文件夹名称
 * 通过此种办法我们可以做到根据用户的选择保存到相应的文件夹下
 */
  /*  private File creatFolder(String realpath, String photoName) {
        File file = null;
        File driverFolder = new File(realpath);            //一级文件夹
        String[] eachFolder = photoName.split("\\.");
        if (driverFolder.exists()) {                                //如果一级文件夹存在,则检测二级文件夹
            File secondFolder = new File(driverFolder, eachFolder[0]);
            if (secondFolder.exists()) {                        //如果二级文件夹也存在,则创建文件
                file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);
            } else {                                            //如果二级文件夹不存在,则创建二级文件夹
                secondFolder.mkdir();
                file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);        //创建完二级文件夹后,再合建文件
            }
        } else {                                                //如果一级不存在,则创建一级文件夹
            driverFolder.mkdir();
            File secondFolder = new File(driverFolder, eachFolder[0]);
            if (secondFolder.exists()) {                        //如果二级文件夹也存在,则创建文件
                file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);
            } else {                                            //如果二级文件夹不存在,则创建二级文件夹
                secondFolder.mkdir();
                file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);
            }
        }
        return file;
    }
}*/


© 著作权归作者所有

共有 人打赏支持
青_松
粉丝 0
博文 3
码字总数 862
作品 0
海淀
程序员
加载中

评论(1)

企业云终端管理中心
企业云终端管理中心
#此处输入软件名#云盘
Video-No.01 李守宏_SpringMVC基础与应用视频教程

1、SpringMVC基本配置 1)引入spring Jar包 2)配置web.xm文件,加载SpringMVC配置 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc......

蓝汀华韶
2015/03/22
0
0
文件的上传和下载--SpringMVC

文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载、邮件附件的上传和下载等。 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解。 一.文件上传 多数文件上传都...

一飞要上天
08/23
0
0
利用spring的CommonsMultipartResolver上传文件

1、CommonsMultipartResolver是spring里面提供的一个上传方式,效率我不知道,但是加入spring容器管理还是很不错的。 2、先看依赖包pom.xml

小不点丶
2017/05/11
0
0
SpringMVC MultipartFile转换成java.io.File类型

SpringMVC实现文件上传,看网上的文章基本都是通过MultipartFile实现,因为不想改服务层的接口,所以想问一下有什么方法可以将MultipartFile转换成File,或者Spring直接以File类型作为参数提...

kevinpan45
2014/05/03
3.8K
1
实现HTTP PUT方式上传文件。

使用restful方式编程,有时候put方式修改文件。但是默认情况下很多浏览器(比如:chrom)不支持put方式修改文件。spring默认情况下也不支持PUT方式修改文件。如果想要支持,方式如下: 一、后...

王坤charlie
2017/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
29分钟前
0
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
31分钟前
1
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
31分钟前
1
0
【Centos】在nginx服务器中配置php和mysql

接上一章《【Centos】利用Vultr服务器和namesilo布网》(https://my.oschina.net/u/3776619/blog/2051986),在Centos中配置好nginx,并在iptables中开启了80端口,和为了远程mysql操作方便开...

yongh701
55分钟前
3
0
flume -- fileChannel简要分析其过程

flume之event写入FileChannel doPut(event)-->获取共享锁后[log.lockShared();]-->FlumeEventPointer ptr = log.put(transactionID, event); 此处的log.put即将transactionID及event进行后续......

-九天-
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部