利用struts进行图片上传

http://www.oschina.net/code/snippet_260617_9555

在struts.xml文件中配置:
<!-- 上传文件临时文件位置 -->
<constant name= "struts.multipart.saveDir" value= "/tmp" />
<constant name= "struts.multipart.maxSize" value= "1000000000" />
 
package edu.ING.ING_pro_school.school.action;
 
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
 
import org.apache.struts2.ServletActionContext;
 
 
public class SetFaceAction {
 
   private static final long serialVersionUID =1L;
 
   private static final int BUFFER_SIZE = 16 * 1024 ;
 
   // 页面图片
   private File photoFile;
 
   // 图片名
   private String photoFileFileName;
 
   // 图片类型
   private String photoFileContentType;
 
   private String img;
 
   public String getImg() {
     return img;
   }
 
   public void setImg(String img) {
     this .img = img;
   }
 
   public File getPhotoFile() {
     return photoFile;
   }
 
   public void setPhotoFile(File photoFile) {
     this .photoFile = photoFile;
   }
 
   public String getPhotoFileFileName() { return photoFileFileName;
   }
 
   public void setPhotoFileFileName(String photoFileFileName) {
     this .photoFileFileName = photoFileFileName;
   }
 
   public String getPhotoFileContentType() {
     return photoFileContentType;
   }
 
   public void setPhotoFileContentType(String photoFileContentType) {
     this .photoFileContentType = photoFileContentType;
   }
 
   /*
    * 取得运行时服务器目录
    *
    * @return 服务器根目录
    */
 
   public String getSavePath() {
     // 如果是从服务器上取就用这个获得系统的绝对路径方法。
     return ServletActionContext.getServletContext().getRealPath( "/" );
   }
 
   public String download() throws UnsupportedEncodingException {
     String path = getSavePath() + "\\UploadImages\\" + this .getImg();   System.out.println( "path is " + path);
     BufferedInputStream bis = null ;
     BufferedOutputStream bos = null ;
     OutputStream fos = null ;
     InputStream fis = null ;
 
     String filepath = path;
     System.out.println( "文件路径" + filepath);
     File uploadFile = new File(filepath);
     try {
       fis = new FileInputStream(uploadFile);
       bis = new BufferedInputStream(fis);
       fos = ServletActionContext.getResponse().getOutputStream();
       bos = new BufferedOutputStream(fos);
       // 这个就就是弹出下载对话框的关键代码
       ServletActionContext.getResponse().setHeader( "Content-disposition" ,
           "attachment;filename=" + URLEncoder.encode(path, "gbk" ));
       int bytesRead = 0 ;
       // 这个地方的同上传的一样。我就不多说了,都是用输入流进行先读,然后用输出流去写,唯一不同的是我用的是缓冲输入输出流
       byte [] buffer = new byte [ 8192 ];
       while ((bytesRead = bis.read(buffer, 0 , 8192 )) !=- 1 ) {
         bos.write(buffer, 0 , bytesRead);
       }
       bos.flush();
       fis.close();
       bis.close();
       fos.close();
       bos.close();
     } catch (FileNotFoundException e) {
       e.printStackTrace();
     } catch (IOException e) {
       e.printStackTrace();
     }
     return null ;
   }
/**
  * 上传图片
  * 修改
   * @return
  * @throws Exception
  */
   public String setFace() throws Exception {
     if ( null != this .getPhotoFile()) {
       // 从画面上取得图片文件
       File files = this .getPhotoFile();
       // 文件名 = 文件名 + 日期
       photoFileFileName = new Date().getTime() + photoFileFileName.trim();
       String savePath = getSavePath() + "\\UploadImages\\" ;
       // 判断保存用文件夹是否存在
       mkdir(savePath);
       // 保存用的数据流生成
       FileOutputStream fos = new FileOutputStream(savePath + photoFileFileName);
       System.out.println(savePath + photoFileFileName);
       // 保存文件
       FileInputStream fis = new FileInputStream(files);
       byte [] buffer = new byte [BUFFER_SIZE];
       int len = 0 ;
       while ((len = fis.read(buffer)) > 0 ) {
         fos.write(buffer, 0 , len);
       }
     }
     return "" ;
   }
 
   /*
    * 判断保存用文件夹是否存在
    *
    * @param path 保存用的文件夹路径
    */
   public void mkdir(String path) {
     File file = new File(path);
     // 如果存在
     if (file.exists()) {
       System.out.println( "the dir is exits" );
       // 如果不存在,新建
     } else {
       file.mkdir();
       System.out.println( "have made a dir" );
     }
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值