图片在页面上的写入和读取(框架:freemarker+mybatis+mysql)

1,首先保存商品图片,不要忘记以多媒体文件提交:enctype="multipart/form-data"

前台页面, freemarker中:


                    


 


                
  
                 
    
    
 

 

 js校验图片:

 

后台:

/**
     * ********************************************************
     * @Title: save
     * @Description: 修改保存
     * @return String
     * @throws IOException 
     * @date 2018-05-09 下午 03:02:58 
     ********************************************************
     */
     @RequestMapping("/save")
    public @ResponseBody Map save(@RequestParam(required = false) MultipartFile file,@ModelAttribute("Commodity") Commodity  commodity) throws IOException{
         if(file.getSize()>0){
             String picName = System.currentTimeMillis()+"."+file.getOriginalFilename().split("\\.")[1];
             String picUrlPath = DateUtil.getTypeUrl("commondata", "commpicpath");
             String picUrlPathd = DateUtil.getTypeUrl("commondata", "commpicpath")+"//"+picName;
             //判断文件夹是否存在,不存在则创建新文件夹
             File picFile = new File(picUrlPath);
             if (!picFile.isDirectory()) { // 目录不存在          
                 picFile.mkdir(); // 创建目录
             }
             //1,创建目标图片文件
             File descPic = new File(picUrlPathd);
             // 2.提供相应的流对象
             FileInputStream fis = null;
             FileOutputStream fos = null;
             try {
                 fis = (FileInputStream) file.getInputStream();
                 fos = new FileOutputStream(descPic);
                 // 3.实现复制
                 byte[] byts = new byte[1024];
                 int len;
                 while ((len = fis.read(byts, 0, byts.length)) != -1) {
                     fos.write(byts, 0, len);
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }finally{
                 fis.close();
                 fos.close();
             }
             commodity.setPicture(picName);
         }
         if(commodity.getComm_no()==null||commodity.getComm_no().equals("")){
             resForFinally=commodityService.insert(commodity);
         }else{
             resForFinally=commodityService.update(commodity);
         }
         message = resForFinally > 0 ? "保存成功" : "保存失败";
         return message2(message,resForFinally);
    }

 

读取配置文件的工具类:

  /**
     * 
     *********************************************************.

     * [方法] getProperty

     * [描述] TODO(根据服务器类型取不同地址)

     * [参数] TODO(文件名,路径key)

     * [返回] String

     * [时间] 2018-2-8 上午10:58:29

     * [作者] 郭太东 【lc】
     *********************************************************.

     */
    public static String getTypeUrl(String name, String url){
        ResourceBundle rb=ResourceBundle.getBundle(name);
        String reurl = rb.getString("server")+url;
        return rb.getString(reurl);
    }

 

配置文件:(文件名:commondata.properties,位于项目根目录下 )

#linux, windows  \u5F53\u524D\u7C7B\u578B

server=windows

#\u672C\u5730
#\u5546\u54C1\u56FE\u7247\u4E0A\u4F20\u8DEF\u5F84
windowscommpicpath=E\://YGZC//commimportPicture
#\u663E\u793A\u5546\u54C1\u56FE\u7247\u7684\u8DEF\u5F84
picturePath=E\:\\YGZC\\commimportPicture\\
img.root=E\://YGZC//commimportPicture

图片在页面上的写入和读取(框架:freemarker+mybatis+mysql)_第1张图片

以上为商品tu'p图片的添加,ru'g如果要修改商品,则需要对商品进行读取显示,下面是对商品图片在修改的进行回显的代码:

/**
     * ********************************************************
     * @Title: ShowImg
     * @Description:显示商品图片   
     * @return String
     * @date 2018-05-17 下午 05:28:15 
     ********************************************************
     */
    @RequestMapping(value="ShowImg")
    public void ShowImg(HttpServletRequest request,HttpServletResponse response) throws IOException{
       String id = request.getParameter("id"); //文件名
       if(id!=null&&!id.equals("")){
           //E:\YGZC\commimportPicture\1526550721498.jpg
           String path= commodityService.getString("getPicurl", id).toString();

          //这里是存放图片的文件夹地址
           String picUrlPathd = DateUtil.getUrl("commondata", "picturePath")+path;
           System.out.println(picUrlPathd);
           FileInputStream fileIs=null;
           try {
                 fileIs = new FileInputStream(picUrlPathd);
               } catch (Exception e) {
                 return;
               }
                   int i=fileIs.available(); //得到文件大小   
                   byte data[]=new byte[i];   
                   fileIs.read(data);  //读数据   
                   response.setContentType("image/*"); //设置返回的文件类型   
                   OutputStream outStream=response.getOutputStream(); //得到向客户端输出二进制数据的对象   
                   outStream.write(data);  //输出数据      
                   outStream.flush();  
                   outStream.close();   
                   fileIs.close();  
             
       }
    }

 

图片在页面上的写入和读取(框架:freemarker+mybatis+mysql)_第2张图片

 

 

你可能感兴趣的:(前端技术,后端技术,dwz前端框架)