首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

根据struts的FormFile来下传文件

2012-11-19 
根据struts的FormFile来上传文件package com.score.web.action.pictureimport java.io.Fileimport java.

根据struts的FormFile来上传文件

package com.score.web.action.picture;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.score.model.members.ScoreMembers;
import com.score.model.picture.ScorePhoto;
import com.score.service.exception.BeanAlreadyExistsException;
import com.score.service.picture.ScorePhotoManager;
import com.score.web.action.core.BaseAction;
import com.score.web.action.upload.UploadFileForm;

public class CreatePhotoAction extends BaseAction{
??public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
????HttpServletRequest request, HttpServletResponse response) {
?
????UploadFileForm uploadForm = (UploadFileForm) actionForm;
????FormFile file = uploadForm.getFileForm();
????
????if(file.getContentType().equals("image/jpeg")){ //判断类型
?????System.out.println("jpeg 类型");
????}else if(file.getContentType().equals("image/png")){
?????System.out.println("png 类型");
????}else if(file.getContentType().equals("image/gif")){
?????System.out.println("gif 类型");
????}else if(file.getContentType().equals("image/pjpeg")){
?????System.out.println("jpg 类型");
????}else{
?????System.out.println("不是图片!");
?????request.setAttribute("errorFlag", "1");
?????return mapping.findForward("listpicture");
????}
???
???? ????if(file.getFileSize()>2097152){ //判断大小
?????System.out.println("大于2M");
?????request.getSession().setAttribute("errorFlag",2);
?????return mapping.findForward("listpicture");
????}
????
????String uri = membersHead(request,file);
????request.setAttribute("uri", uri);
????
????ScorePhotoManager spm=(ScorePhotoManager)getBean("scorePhotoManager");
????ScorePhoto sp=new ScorePhoto();
????sp.setPhotoAddr(uri);
????try {
?????spm.createScorePhoto(sp);
????} catch (BeanAlreadyExistsException e) {
?????// TODO Auto-generated catch block
?????e.printStackTrace();
????}
????request.getSession().setAttribute("errorFlag",1);
????return mapping.findForward("listpicture");
???}

//membersHead方法可以写到service层,然后调用,此处为方便理解,写在action中

//membersHead方法判断文件的大小和类型

??// 会员资料文件
??public String membersHead(HttpServletRequest request,FormFile file) {
???String uri = "";
???String dir = servlet.getServletContext().getRealPath("/upload");
???// 文件夹
???File dirFile = null;
???boolean bFile = false;
???dirFile = new File(dir);
???bFile = dirFile.exists();// true 该文件夹存在,false 不存在
???if (bFile == false) {
????bFile = dirFile.mkdirs();
????if (bFile == false) {
?????System.out.println(" 文件夹创建失败!");
????}
???}

???if (bFile == true) {
????try {

?????InputStream input = file.getInputStream();// 能从FormFile中获得输入流
?????String uid = UUID.randomUUID().toString();
?????String fileName = file.getFileName();
?????fileName = uid + fileName.substring(fileName.lastIndexOf("."));
?????OutputStream output = new FileOutputStream(dir + "/" + fileName);

?????int bytesReader = 0;

?????byte[] readbuffer = new byte[102400];

?????while ((bytesReader = input.read(readbuffer, 0, 102400)) != -1) {

??????output.write(readbuffer, 0, bytesReader);

?????}
?????output.close();
?????String protco = request.getProtocol().substring(0,
???????request.getProtocol().indexOf("/"));
?????String webPath = protco + "://" + request.getServerName() + ":"
???????+ request.getServerPort();
?????// 资料路径
?????uri = webPath + "/upload/"+ fileName;

????} catch (Exception e) {
?????e.printStackTrace();
????}
???}
???return uri;
???

??}
??
?}
附:

/**
?* 所要上传的文件的Form
?* @author UploadFileForm?
?* @version $Revision: $ $Date: $
?*/
public class UploadFileForm extends BaseForm implements java.io.Serializable{
?
?private FormFile file;

?public FormFile getFile() {
??return file;
?}

?public void setFile(FormFile file) {
??this.file = file;
?}

}

热点排行