课程咨询 :15265420612 QQ:2720475033

  • 利用Struts进行图片上传

    发布:潍坊java培训      来源:潍坊java培训      时间:2016-08-31

  • 利用Struts进行图片上传

    在struts.xml文件中配置:

    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"";

    }

    /*

    * 判断保存用文件夹是否存在

    *Java中文网:http://www.javaweb.cc

    * @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");

    }

    }

    }

上一篇:Struts2做的全功能留言板

下一篇:JSF中用户登出返回登录页面问题

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:6月30日

Java--大数据周末班

Java--大数据周末班

开班日期:6月30日

Java--大数据全日制班

Java--大数据全日制班

开班日期:6月30日

Java--零基础周末班

Java--零基础周末班

开班日期:6月30日

 扫一扫,关注一下! 潍坊:奎文区东风东街299号建行大厦 济宁:市中区太白路10号苏宁生活广场
烟台:海港路25号阳光100城市广场 临沂:兰山区红旗路1号苏宁易购
淄博:张店区金晶大道68号华润大厦 济南:历下区趵突泉北路三联商社
济南:历下区山大路47号数码港大厦 青岛:市南区金坛路17号
课程培训电话:15265420612 QQ:2720475033 全国服务监督电话:400-111-8989    服务邮箱 tousu@tedu.cn

2001-2017 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56