文档章节

Spring 上传文件后台

青_松
 青_松
发布于 2013/08/22 10:55
字数 483
阅读 108
收藏 2
点赞 0
评论 1

@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 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
java web srpingmvc 上传文件,大于1MB的文件上传途中总是中断,求赐教

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

isevenun
2017/02/02
346
3
SpringMVC+jquery-fineuploader 文件上传

springmvc文件上传真头疼,网上搜了半天没发现都是TMD的用submit按钮提交到后台的,就没有插件的吗? 刚开始找到个ajaxfileUpload.还可以,单文件上传不错 ,怎么搞的网上百度一下很多. 最后...

javacc
2012/11/29
0
6
java项目前后台架构问题

maven架构的一个项目,分为前台和后台好呢,还是前台后台都写在一起呢 框架:spring+springMVC+mybatis 1.后台进行管理,上传图片上传到哪里?前台才可以获取到? 2.两个项目(前台、后台)同...

双人鱼XKQ
2016/07/19
1K
9
使用jquery.form提交含有file的表单

使用jquery.form插件提交含有input type=file 的表单,后台使用springmvc MultiPartFile接收,当未选择上传文件时,spring会报错:org.springframework.beans.ConversionNotSupportedExcepti...

Leo_Yeung
2016/09/12
1K
1
spring mvc文件上传实现进度条

文件上传应该大部分人都接触过,一般都是基于commons-fileupload组件来实现,SpringMVC的文件上传功能也是在commons-fileupload组件提供的功能上面做了一些包装功能,使文件上传开发更容易方...

小天120
2014/02/10
0
20
webuploader + springmvc上传

首先去官网下载:http://fex.baidu.com/webuploader/download.html 前台: 放到项目里面,修改upload.js中的server:'up'; 修改webuploader.js中的sendAsBinary: false sendAsBinary {Object}......

许大白
2015/04/16
0
2
Jeesite 表单控件使用方法 Spring-MVC form、JSTL1.1

在这里会简述及展示,部分表单控件如何应用以及后端数据如何处理和应用。 框架使用Spring封装的一系列表单标签。 Spring MVC form声明 JSTL 1.1声明 文件位置:WEB-INF/tlds/fns.tld 涉及方法...

华山猛男
2017/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
9分钟前
0
0
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
20分钟前
0
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
26分钟前
0
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
40分钟前
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
47分钟前
0
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
55分钟前
0
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
56分钟前
0
0
安装tensorflow-XXX报错

报错: tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this platform. 解决: wget https://bootstrap.pypa.io/get-pip.py sudo python2.7 get-pip.py sudo p......

Yao--靠自己
59分钟前
0
0
JVM学习手册(一):JVM模型

一直从事JAVA开发,天天和JVM打交道,仔细想想对JVM还真的不是特别了解,实在是不应该.周六看了许多资料,也算有点心得,记录一下。 JVM内存模型分为5个区域:方法区,堆,虚拟机栈,本地方法栈,程序计...

勤奋的蚂蚁
今天
0
0
转行零基础该如何学Python?这些一定要明白!

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。...

猫咪编程
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部