当前位置:首页 > 开发 > 移动开发 > 正文

根据struts的FormFile来上传文件

发表于: 2012-10-30   作者:cngolon   来源:转载   浏览次数:
摘要: 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.Http

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

}

根据struts的FormFile来上传文件

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
首先要加入上传文件需要的jar文件 commons-fileupload-1.2.1.jar commomons-io-1.3.2.jar不同版本的
前一段时间刚来公司,看到一个项目中以前有人写的struts代码。是使用了FormFile来处理关于文件上传的
声明本文出处:http://blog.163.com/quentin_wjb/blog/#pn2 一、上传单个文件 上传文件是很多Web程序
声明本文出处:http://blog.163.com/quentin_wjb/blog/#pn2 一、上传单个文件 上传文件是很多Web程序
1.单文件上传,不多说,见图: 注意第3步action中的属性名,以及get和set方法,名称不能乱写,属性名后缀不
前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问
前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问
前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问
很多应用都要求在一个界面中可以上传多个文件,Struts 2框架也可以方便地支持多个文件同时上传,一
转自:http://wanjianfei.iteye.com/blog/444067 1. 文件上传的原理: 表单元素的 enctype 属性指定
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号