Spring 上传文件后台
博客专区 > 青_松 的博客 > 博客详情
Spring 上传文件后台
青_松 发表于5年前
Spring 上传文件后台
  • 发表于 5年前
  • 阅读 108
  • 收藏 2
  • 点赞 0
  • 评论 1

【腾讯云】新注册用户域名抢购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
评论 (1)
企业云终端管理中心
#此处输入软件名#云盘
×
青_松
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: