潍坊Java培训
达内潍坊中心

15265420612

热门课程

利用Struts进行图片上传

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

利用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培训:怎么学习编程?

给迷茫开发者的 18 条建议

java和java开发工程师现状

为什么你只是一个小码农?

选择城市和中心
贵州省

广西省

海南省