Spring 上传文件后台

@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;
    }
}*/
java

相关文章
相关标签/搜索