博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts中的一个简单上传图片操作
阅读量:6117 次
发布时间:2019-06-21

本文共 2603 字,大约阅读时间需要 8 分钟。

hot3.png

ActionMessages msgs = new ActionMessages();

 TestUploadForm upForm = (TestUploadForm)form;
 String  fileName = upForm.getPhoto().getFileName();//获取上传文件名称
 int fileByteSize = upForm.getPhoto().getFileSize();//获取上传文件大小 -Byte
 
 if(fileByteSize > BYTE_SIZE){//验证图片大小
  msgs.add("photoSize", new ActionMessage("error.photo_size_empty"));
  saveMessages(request, msgs);
  return new ActionForward("/html/circle/album_add.vm?sid="+clForm.getSid(),false);
 }
 
 String fn = fileName.substring(fileName.lastIndexOf("."));
 if( fn.equalsIgnoreCase(".jpg") || fn.equalsIgnoreCase(".gif")){//验证图片格式
  Calendar calendar = new GregorianCalendar();
  Date trialTime = new Date();
  calendar.setTime(trialTime);
  //使用当前时间创建保存图片的文件夹
  String timePath = calendar.get(Calendar.YEAR)+"\\"+(calendar.get(Calendar.MONTH)+1)+"\\"+calendar.get(Calendar.DAY_OF_MONTH);
  File uploadPath = new File(this.getServlet().getServletContext().getRealPath("uploads")+"\\photo\\"+timePath);
  if(!uploadPath.exists())uploadPath.mkdirs();//如果文件夹不存在 创建文件夹
  //设置存放图片的绝对地址
  File upliadFile = new File(this.getServlet().getServletContext().getRealPath("uploads")+"\\circlePhoto\\"+timePath+"\\"+fileName);
  BufferedOutputStream bos = null;
  BufferedInputStream bis = null;
  try {
   bis = new BufferedInputStream(upForm.getPhoto().getInputStream());
   Image img = javax.imageio.ImageIO.read(bis);
   int photoWidth  = img.getWidth(null);
   int photoHeight = img.getHeight(null);
   //图片规格 不符合规范...生成略缩图
   if (photoWidth > WIDTH || photoHeight > HEIGHT) {
    BufferedImage bi = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
    bi.getGraphics().drawImage(img, 0, 0, WIDTH, HEIGHT, null);
    bos = new BufferedOutputStream(new FileOutputStream(upliadFile));
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
    encoder.encode(bi);
   } else {//包存原有图片大小
    BufferedImage bi = new BufferedImage(photoWidth, photoHeight,BufferedImage.TYPE_INT_RGB);
    bi.getGraphics().drawImage(img, 0, 0, photoWidth, photoHeight, null);
    bos = new BufferedOutputStream(new FileOutputStream(upliadFile));
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
    encoder.encode(bi);
   }
   String path = (timePath+"\\"+fileName).replace("\\","/");
   
   /**
    * 最后向数据库中保存 图片地址
    **/
   
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   try{
    if (bis != null)bis.close();
    if (bos != null)bos.close();
   }catch(IOException e) {
    e.printStackTrace();
   }
  }
 }else{
  //格式不正确
  msgs.add("photoType", new ActionMessage("error.photo_type_empty"));
  saveMessages(request, msgs);
  return new ActionForward("/html/circle/album_add.vm?sid="+clForm.getSid(),false);
 }

 

第一次自己写上传操作.由很多不足的地方希望大家多多指教

原文链接:

转载于:https://my.oschina.net/moroseyu/blog/51463

你可能感兴趣的文章
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
linux系统安装的引导镜像制作流程分享
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>