文档章节

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)

企业云终端管理中心
企业云终端管理中心
#此处输入软件名#云盘
SpringMVC MultipartFile转换成java.io.File类型

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

kevinpan45
2014/05/03
3.8K
1
java web srpingmvc 上传文件,大于1MB的文件上传途中总是中断,求赐教

目前用的框架是spring springmvc mybatis,我上传文件的时候,稍大点的文件在本地测试,当然瞬间就能上传成功,但是放到服务器上测试的时候,稍大点的文件上传需要耗费时间,所以常常会没办法...

isevenun
2017/02/02
690
3
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
ajax传输formdata的问题

我现在要做一个上传的功能,需要对上传文件的类型进行判断,但是现在前台好像是做不了啦。 使用document.getElementById直接获取input type=file的标签对象,然后使用value属性现在取不到值了...

我就是个菜
2016/01/22
428
0
Spring文件上传功能源码剖析

Spring默认提供了文件上传的功能。用起来非常简单,我们也可以使用第三方的如Apache的CommonsUpload包来处理。这里我们使用Spring自带的解析。 基本用法 1、在Spring配置中,加上MultipartRe...

艾贺
2017/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows命令行杀死占用端口的进程

假如要查看的端口号是80: netstat -aon|findstr "80" 这个时候我们会看到下面的 TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448 最后,杀死进程 taskkill /f /t......

hengbao5
13分钟前
0
0
c++ 定义新的异常

#include <iostream> #include <exception> using namespace std; struct MyException : public exception { const char * what () const throw () { return "C++ Exception"; } }; int main......

天王盖地虎626
今天
3
0
PDMan-2.1.1 发布:用心开源,免费的国产数据库建模工具(春节前最后一个版本)

一、软件介绍 PDMan 是一款开源免费的数据库模型建模工具,是PowerDesigner之外另一种更好的选择。支持Windows,Mac,Linux等操作系统,具有上手容易,使用简单的特点。 2018年获得码云GVP (Gi...

O龙猫O
今天
20
0
OSChina 周二乱弹 —— 以后我偷小鱼干养你

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @庞巴哥 :只有这节奏瞬间变得轻松。。。。。。。。。分享Talking Eyes的单曲《In the sun (Extended Version)》: 《In the sun (Extended Ve...

小小编辑
今天
730
10
多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部