• springmvc之文件上传、下载


    1、接收到的是图片的流时

    //上传头像
        @RequestMapping(value = "/uploadHeadSculpture", method = RequestMethod.POST)
        @ResponseBody
        public String uploadHeadSculpture(@RequestParam("photo") String file) {
            User user = (User) SecurityUtils.getSubject().getSession().getAttribute("curr_user");
            //获取文件格式
            String postfix = file.split("/")[1].split(";")[0];
            //获取图片的Base64码
            String str = file.split(",")[1];
            String url = "";
            BASE64Decoder decoder = new BASE64Decoder();
            try {
                // Base64解码
                byte[] bytes = decoder.decodeBuffer(str);
                for (int i = 0; i < bytes.length; ++i) {
                    // 调整异常数据
                    if (bytes[i] < 0) {
                        bytes[i] += 256;
                    }
                }
                long title = Calendar.getInstance().getTimeInMillis();
                //获取系统路径并设定文件保存的目录
                String dir = ServiceConfigUtil.getValue("imgpath");//图片的上传路径,我这里是从工程的配置文件获取的
                String fileName = title + "." + postfix;
                // 生成jpeg图片
                FileUtils.writeByteArrayToFile(new File(dir, fileName), bytes);
                String lookUserPhoto = ServiceConfigUtil.getValue("lookUserPhoto");//图片的访问路径,我这里是从工程配置文件获取的,可以自己定义。如果你的图片保存在工程目录下,可以直接用dir+fileName
                url = lookUserPhoto + fileName;//保存到数据库的图片访问路径
                /××
            ×保存url到数据库
           ××/
    } catch (Exception e) {return "no"; }return "yes"; }

    注:接收参数file值的一个基本格式

      "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAdiUlEQVR........."

    2、接收到的是file文件直接上传

     @RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST)
     public String saveOrUpdate(Person p, @RequestParam("photo") MultipartFile file, HttpServletRequest request) throws IOException{
         if(!file.isEmpty()){
            ServletContext sc = request.getSession().getServletContext();
             String dir = sc.getRealPath(“/upload”);    //设定文件保存的目录
            
            String filename = file.getOriginalFilename();    //得到上传时的文件名
            FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());
            
            p.setPhotoPath(“/upload/”+filename);    //设置图片所在路径
            
            System.out.println("upload over. "+ filename);
        }    
        ps.saveOrUpdate(p);    
        return "redirect:/person/list.action";   //重定向
    }

     2.1、页面

    <form action="/saveOrUpdate" enctype="multipart/form-data" method="post">
        <input type="file" name="photo">
        <input type="submit" value="commit">
    </form>

    2.2、需要在springmvc配置文件中添加

    <!--上传文件-->
        <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="10000000000000"/>
            <property name="defaultEncoding" value="UTF-8"/>
        </bean>

    3、文件下载

    private void downFile(String filename, String realPath, HttpServletResponse response) throws IOException {
            try {
                filename = new String(filename.getBytes("ISO-8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                log.warn("文件转码出现异常异常信息为:" + ExceptionUtil.print(e));
            }
            log.debug("下载的文件名:" + filename);
            log.debug("下载的文件路径:" + realPath);
            OutputStream os = null;
            InputStream inputStream = null;
            try {
                response.setCharacterEncoding("utf-8");
                response.setContentType("multipart/form-data");
                response.setContentType("application/x-download");
                response.setHeader("Content-Disposition", "attachment;fileName="
                        + filename);
                inputStream = new FileInputStream(realPath);
                os = response.getOutputStream();
                byte[] b = new byte[1024];
                int length;
                while ((length = inputStream.read(b)) != -1) {
                    os.write(b, 0, length);
                }
                os.flush();
            } catch (IOException e) {
                log.warn("下载文件出现异常,异常信息为:" + ExceptionUtil.print(e));
            } finally {
                inputStream.close();
                os.close();
            }
        }

    参考:springmvc文件上传

    数据导出:java 导出excel到客户端(本地)例子 用poi和servlet实现的

  • 相关阅读:
    memcached命令
    模块管理常规功能自己定义系统的设计与实现(14--模块图表分析的设计)
    [易飞]凭证设计扩展字段之内容-文字显示格式
    将替代ListView的RecyclerView 的使用(一)
    POJ 2049— Finding Nemo(三维BFS)10/200
    最好用的jquery列表拖动排列(由项目提取)
    编程算法
    java几个easy出错的小程序
    GoldenGate配置(三)之DDL复制配置
    aused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible min
  • 原文地址:https://www.cnblogs.com/sunjf/p/springmvc_fileupload.html
Copyright © 2020-2023  润新知