首页>代码>基于SSM实现的社区论坛系统(附PPT、设计文档)>/源代码/leek_bbs/src/main/java/com/lindong/controller/FileUploadController.java
package com.lindong.controller;


import com.lindong.service.IUserService;
import org.springframework.stereotype.Controller;
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 javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;

@Controller
@RequestMapping("bbs/file")
public class FileUploadController {

    @Resource
    private IUserService userService;

    //单文件上传
    @RequestMapping(value = "/fileupload",method = RequestMethod.POST)
    @ResponseBody
    public Map upload(MultipartFile file, HttpServletRequest request) throws IOException {

        //初始化时间并格式化,用于做上传文件的名字
        /*SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
        String res = sdf.format(new Date());*/

        // uploads文件夹位置
        String rootPath = request.getSession().getServletContext().getRealPath("uploadfiles/");
        // 原始名称
        String originalFileName = file.getOriginalFilename();
        //uuid
        String uuid = UUID.randomUUID().toString().replace("-","");
        // 文件名后缀(.*)
        String newFileName = uuid + originalFileName.substring(originalFileName.lastIndexOf("."));
        // 创建年月文件夹
        Calendar date = Calendar.getInstance();
        // File.separator 保证了在任何系统下不会出错,尽量加上,也考虑跨平台抛异常
        File dateDirs = new File(date.get(Calendar.YEAR) + File.separator + (date.get(Calendar.MONTH) + 1));
        System.out.println("datedirs:" + dateDirs);
        // 新文件
        File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);
        System.out.println("newFile:" + newFile);
        // 判断目标文件所在目录是否存在
        if (!newFile.getParentFile().exists()) {
            // 如果目标文件所在的目录不存在,则创建父目录
            newFile.getParentFile().mkdirs();
        }
        System.out.println(newFile);
        // 将内存中的数据写入磁盘
        file.transferTo(newFile);
        // 完整的url
        String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH) + 1) + "/" + newFileName;
        System.out.println("==============fileUrl:" + fileUrl);
        Map map = new HashMap();
        String id = request.getParameter("id");
        map.put("picture","uploadfiles/"+fileUrl);
        if (id != null){
            map.put("id",id);
            userService.updateUser(map);
        }
        map.put("code",0);
        map.put("msg","");
        return map;
    }


    /**
     * 多图片上传
     * @param files
     * @param request
     * @return
     */
    @RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> uploadImage(@RequestParam(value = "files", required = false) List<MultipartFile> files,
                                           HttpServletRequest request) {
        System.out.println(">>>>>" + files);
        Map<String, Object> result = new HashMap<>();
        String imgUrls[] = new String[files.size()];
        // 文件存放的路径
        String filePath = request.getSession().getServletContext().getRealPath("uploadfiles/");
        System.out.println(filePath);
        if (files != null && files.size() > 0) {
            for (int i = 0; i < files.size(); i++) {
                MultipartFile file = files.get(i);
                // 原始名称
                String originalFileName = file.getOriginalFilename();
                //uuid
                String uuid = UUID.randomUUID().toString().replace("-","");
                // 文件名后缀(.*)
                String newFileName = uuid + originalFileName.substring(originalFileName.lastIndexOf("."));
                // 创建年月文件夹
                Calendar date = Calendar.getInstance();
                // File.separator 保证了在任何系统下不会出错,尽量加上,也考虑跨平台抛异常
                File dateDirs = new File(date.get(Calendar.YEAR) + File.separator + (date.get(Calendar.MONTH) + 1));
                System.out.println("datedirs:" + dateDirs);
                // 新文件
                File newFile = new File(filePath + File.separator + dateDirs + File.separator + newFileName);
                System.out.println("newFile:" + newFile);
                // 判断目标文件所在目录是否存在
                if (!newFile.getParentFile().exists()) {
                    // 如果目标文件所在的目录不存在,则创建父目录
                    newFile.getParentFile().mkdirs();
                }
                System.out.println(newFile);
                // 将内存中的数据写入磁盘
                try {
                    file.transferTo(newFile);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // 完整的url
                String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH) + 1) + "/" + newFileName;
                System.out.println("==============fileUrl:" + fileUrl);
                imgUrls[i] = fileUrl;
            }

        }
        result.put("errno", 0);
        result.put("data", imgUrls);
        return result;
    }


}
最近下载更多
angaochong  LV5 10月15日
2636804923  LV6 6月13日
sweetlove  LV20 6月13日
xiao1111  LV3 5月15日
来一杯西瓜冰咩  LV6 5月13日
JulyMagnolia  LV4 4月29日
getset  LV8 4月21日
xiaozhi丶  LV15 3月28日
eam124  LV2 3月6日
最近浏览更多
krispeng  LV13 11月14日
yayacui  LV2 10月28日
angaochong  LV5 10月15日
zhangjishao 10月15日
暂无贡献等级
wlax99  LV12 10月12日
kaiser622 10月11日
暂无贡献等级
Peny_ZH  LV5 9月21日
zvcbnlk  LV2 9月20日
柳咪华沙  LV7 9月16日
2911892854 8月7日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友