SPRINGMVC模式上传文件

这里包括三个上传的方式都是项目当中用到过的,都是大同小异主要还是运用SPRINGMVC里面的 MultipartFile file

package com.xiaoquan.approval.controller.admin;

import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.xiaoquan.approval.core.BaseController;
import com.xiaoquan.approval.domain.T_ProjectFile;
import com.xiaoquan.approval.domain.T_ProjectIdea;
import com.xiaoquan.approval.domain.T_Users;
import com.xiaoquan.approval.modules.admin.service.T_ProjectFileService;
import com.xiaoquan.approval.modules.admin.service.T_ProjectIdeaService;
import com.xiaoquan.approval.modules.admin.service.T_UsersService;
import com.xiaoquan.approval.utils.EncryptAlgorithm;
import com.xiaoquan.approval.utils.SecurityContextUtil;
@Controller
@RequestMapping(value = "/admin/file/*")
public class AdminFileUploadController extends BaseController {
    @Autowired private T_ProjectFileService filesService;
    @Autowired private T_UsersService t_UsersService;
    @Autowired private T_ProjectIdeaService t_ProjectIdeaService;
    //项目文件
    @ResponseBody
    @RequestMapping(value = "/upload/adjuncted",produces = "text/html;charset=UTF-8",method=RequestMethod.POST)
    public String adjunct(HttpServletRequest request,HttpServletResponse response,
            @RequestParam("files") MultipartFile[] files,Integer type,String fileName0,Long projectId){
        if(files==null||files.length!=1){
             return getAjax(1, "请选择一个文件", null);
        }
        MultipartFile myFile=files[0];
        if(myFile.isEmpty()){
            return getAjax(1, "请选择一个文件", null);
        }
        T_ProjectFile tf=new T_ProjectFile();
        String realPath=null;
        String htmlPath=null;
        String tmpPath =this.getClass().getResource("").getPath();
        String storagePath= tmpPath.substring(0, tmpPath.lastIndexOf("/WEB"));
        try {
            DateFormat dateFormat=new SimpleDateFormat("/yyyy/MM/dd/");
            String prefix="/adjunct";
            if(type==0){
                prefix="/adjunct";
            }else{
                prefix="/files";
            }
            String upload="/upload";
            String dataPath=dateFormat.format(new Date());
            File fileDir=new File(storagePath+upload+prefix+dataPath);
            if(!fileDir.exists()){
                fileDir.mkdirs();
            }
            String fileName = myFile.getOriginalFilename();
            
            //扩展名
            String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
            /*if(!fileExt.equals("zip")){
                return getFailure("文件上传为压缩包!");
            }*/
            
            if(!Arrays.<String>asList("zip,rar,gz,bz2".split(",")).contains(fileExt)){
                return getAjax(300, "上传文件扩展名是不允许的扩展名。\n只允许" + "zip,rar,gz,bz2" + "格式", null);
            }
            //uuid
            String uuidName=UUID.randomUUID().toString().replace("-", "");
            realPath=storagePath+upload+prefix+dataPath+uuidName+"."+fileExt;
            htmlPath=upload+prefix+dataPath+uuidName+"."+fileExt;
            File file=new File(realPath);
            FileUtils.copyInputStreamToFile(myFile.getInputStream(),file);

tf.setProjectFilePath(htmlPath);
            //重命名,换名称
            if(null != fileName0 && !"".equals(fileName0)){
                tf.setRemark(fileName0);
            }else{
                return getFailure("名字不能为空!");
            }
    
            
            filesService.saveOrUpdate(tf);
            
        } catch (Exception e) {
            e.printStackTrace();
            return getFailure("系统错误");
        }
        return getSuccee("保存成功!", tf);
    }
    
    
    //头像
    @ResponseBody
    @RequestMapping(value = "/upload/edit",  produces = "text/html;charset=UTF-8")
    public String picture(Model model,Integer type,String newSrc){
        T_Users user = SecurityContextUtil.getSessionUser();
        T_Users tf=new T_Users();
        if(newSrc==null||("").equals(newSrc)){
             return getAjax(1, "请选择一个文件", null);
        }
        String htmlPath=null;
        String upload="/upload";
        String prefix="/touxiang";
        String tmpPath =this.getClass().getResource("").getPath();
        String storagePath= tmpPath.substring(0, tmpPath.lastIndexOf("/WEB"));
        try {
            DateFormat dateFormat=new SimpleDateFormat("/yyyy/MM/dd/");
            String dataPath=dateFormat.format(new Date());
            
            newSrc=newSrc.substring(22);
            File file=new File(storagePath+upload+prefix+dataPath+user.getId()+".png");
            byte[] a=EncryptAlgorithm.decodeBase64(newSrc);
            FileUtils.writeByteArrayToFile(file, a);
            
            htmlPath=upload+prefix+dataPath+user.getId()+".png";
            tf.setId(user.getId());
            tf.setPath(htmlPath);
            
            t_UsersService.saveOrUpdate(tf);
            
        } catch (Exception e) {
            e.printStackTrace();
            return getFailure("系统错误");
        }
        return getSuccee("保存成功!",tf);
    }
    
    
    @ResponseBody
    @RequestMapping(value = "/upload/partitionIdea",produces = "text/html;charset=UTF-8",method=RequestMethod.POST)
    public String partitionIdea(HttpServletRequest request,HttpServletResponse response,
            @RequestParam("files") MultipartFile[] files,Integer type,String fileName0){
        if(files==null||files.length!=1){
             return getAjax(1, "请选择一个文件", null);
        }
        MultipartFile myFile=files[0];
        if(myFile.isEmpty()){
            return getAjax(1, "请选择一个文件", null);
        }
        T_ProjectIdea tf=new T_ProjectIdea();
        String realPath=null;
        String htmlPath=null;
        String tmpPath =this.getClass().getResource("").getPath();
        String storagePath= tmpPath.substring(0, tmpPath.lastIndexOf("/WEB"));
        try {
            DateFormat dateFormat=new SimpleDateFormat("/yyyy/MM/dd/");
            String prefix="/adjunct";
            if(type==0){
                prefix="/adjunct";
            }else{
                prefix="/files";
            }
            String upload="/upload";
            String dataPath=dateFormat.format(new Date());
            File fileDir=new File(storagePath+upload+prefix+dataPath);
            if(!fileDir.exists()){
                fileDir.mkdirs();
            }
            String fileName = myFile.getOriginalFilename();
            
            //扩展名
            String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
            //uuid
            String uuidName=UUID.randomUUID().toString().replace("-", "");
            realPath=storagePath+upload+prefix+dataPath+uuidName+"."+fileExt;
            htmlPath=upload+prefix+dataPath+uuidName+"."+fileExt;
            File file=new File(realPath);
            FileUtils.copyInputStreamToFile(myFile.getInputStream(),file);
            //重命名,换名称
            if(null != fileName0 && !"".equals(fileName0)){
                tf.setPictureName(fileName0);
            }else{
                return getFailure("名字不能为空!");
            }
            tf.setPicture(htmlPath);
            
        } catch (Exception e) {
            e.printStackTrace();
            return getFailure("系统错误");
        }
        return getSuccee("保存成功!", tf);
    }
    
    
}

时间: 2025-01-04 01:42:34

SPRINGMVC模式上传文件的相关文章

【SpringMVC】使用SpringMVC进行上传文件!

写在前面: 之前在上传文件的时候,使用的是commons-file-upload这个插件,非常方便,能控制每个文件的大小,总共大小,缓存,以及支持多个文件的同时上传,但是写一次上传文件的后台代码量太大了,如图 如果有多个地方都要上传文件,每一次都要复制,粘贴一遍又一遍,实在是太麻烦,后台想到能不能把相同的代码都封装到一个方法,然后需要使用的时候再稍微改一下就行了,在封装的过程中,发现原来SpringMVC有自带的上传文件组件,遂用了一下,感觉多然很方面! 下面详细的说一下使用步骤! 1,准备好相

SpringMVC 学习-上传文件分解器 CommonsMultipartResolver 类

Spring 组件 CommonsMultipartResolver 类的主要作用是配置文件上传的一些属性,也可以控制上传文件的大小. 在 springmvc-servlet.xml 配置文件中: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="d

springmvc异步上传文件

前提条件 注意:bean的id名不能改变 <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSi

springMVC 实现上传文件和下载文件

第一步:在applicationContext.xml中添加支持<!-- 支持文件上传 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean> 第二步: /** * 上传文件 * * @param file * @param request * @param

springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)

首先是导入jar包: web.xml: 1 <servlet> 2 <servlet-name>mvc-dispatcher</servlet-name> 3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 4 <init-param> 5 <param-name>contextConfigLocation&l

SpringMVC 同步上传文件

点滴成页,汇集成册. 1.给FORM标签增加enctype属性 <form action="@Url.Action("RegiUser","Home")"method="post" enctype="multipart/form-data" > </form> 2.动作的方法参数映射增加一个上次文件的基类 public ActionResult 动作方法名(HttpPostedFil

SpringMVC在上传文件的时候提示The current request is not a multipart request错误

@RequestMapping("/insertOrder") @ResponseBody public  Object insertOrder(String userId,HttpServletRequest req) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;             // 获得文件:         MultipartFile fil

springmvc下上传文件

使用ajax+表单+jQuery: function sendFile() { var action = "c/goFile.do"; $("#form").ajaxSubmit( { url : action, success : function(data) { var htm = "<per>"+data "</per>" $("#content").text(data); c

springmvc图片上传(兼容ie8以上,实时预览)

html代码: <form id="uploadform" method="post" enctype="multipart/form-data"> <table> <tr> <td><span class="need">   </span>新闻图片:</td> <td width="100" align="