`

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

}

0
2
分享到:
评论

相关推荐

    struts 单文件上传和多文件上传带进度条

    在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...

    struts框架中formFile批量上传图片

    `FormFile`是Struts的`org.apache.struts.action.ActionForm`类的一个属性,它提供了对上传文件的封装,包括文件名、临时存储路径、文件类型等信息。在用户提交包含文件上传的表单时,`FormFile`对象会被Struts的...

    Struts1.2 formfile实现批量上传

    FormFile对象包含了上传文件的名称、类型、大小以及临时存储在服务器上的路径。 三、批量上传原理 批量上传涉及到同时处理多个文件的上传。用户在前端选择多个文件后,这些文件会被封装成多个FormFile对象,通过...

    struts2文件上传下载

    用户上传文件后,表单提交至`/fileManage/upload`这个URL地址,并由Struts2框架调用`UploadAction`的`execute()`方法进行处理。 ### Struts2文件下载知识点 虽然给定文件的内容中没有直接提及文件下载的实现方法,...

    struts 文件上传 Struts实现文件上传

    - `FormFile`: 用于封装上传文件的信息,包括文件名、类型、大小等。 ### 4. 配置文件 在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`<form-beans>`部分,指定文件上传的临时存储...

    struts1上传文件带进度条

    Struts1使用了`org.apache.struts.upload.FormFile`类来处理文件上传。当用户提交包含文件的表单时,服务器端的ActionForm会接收到这个FormFile对象,通过它获取到文件的内容和元数据。然而,原生的Struts1并不支持...

    struts1实现文件上传

    5. **文件大小转换**:根据文件的大小单位(Byte, KB, MB),进行相应的格式化输出,以便于用户理解上传文件的实际大小。 #### 示例代码解析 - **文件名的生成**:利用当前时间戳生成唯一的文件名,确保每个上传的...

    Struts1实现的文件上传

    Struts1提供了`org.apache.struts.upload.FormFile`类来处理上传的文件。你可能需要重写`execute()`方法,代码如下: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, ...

    struts多文件上传

    使用`org.apache.struts.upload.FormFile`对象来存储上传的文件信息。例如: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse ...

    Struts1文件上传、单文件、多文件上传(上传文件大小问题,如何设置无限制)

    1. **修改配置文件**: 在`struts-config.xml`中,可以通过设置`maximumSize`属性来调整最大上传文件大小。 ```xml ``` 2. **使用第三方库**: 如Apache Commons FileUpload组件,它可以更加灵活地控制文件...

    struts1实现的文件批量上传

    FormFile是Struts1用来处理上传文件的类,它可以获取文件名、内容类型、大小等信息。在这个例子中,使用了一个ArrayList来存储用户选择的所有文件: ```java public class BatchUploadForm extends ActionForm { ...

    jsp+struts文件上传

    2. 创建上传文件的JSP页面。 3. 编写Action类,使用Apache Commons FileUpload处理文件。 4. 验证和保存上传的文件。 5. 显示上传结果。 通过这种方式,你可以构建一个灵活且易于维护的文件上传系统。记住,文件...

    基于struts的文件上传下载源代码

    你需要添加一个类型为`java.io.File`或`org.apache.struts.upload.FormFile`的属性来处理上传的文件。 3. `JSP页面`:用于创建HTML表单,包括文件输入字段`<input type="file">`。用户通过这个表单选择要上传的文件...

    struts文件上传.pdf

    如果需要上传文件,该类中的相应属性应该声明为`org.apache.struts.action.FormFile`类型。Struts框架会自动将客户端上传的文件封装到FormFile对象中。 ```java public class BookForm extends ActionForm { ...

    struts1的文件上传

    配置文件中可以指定上传文件的存储路径,例如在struts-config.xml中定义一个action-mapping,设置其`parameter`属性为文件上传的目录。为了更好地管理上传的文件,可以考虑创建多级目录结构,如按照日期或用户ID来...

    struts 上传 和 smartupload上传

    - 可以通过`ActionContext`获取到上传文件的信息,如文件名、大小、类型等,然后保存到服务器。 **SmartUpload上传** SmartUpload是一个轻量级的Java库,专门用于处理文件上传。相比Struts,SmartUpload提供了...

    android客户端上传文件,struts2服务端接收

    本篇将详细讲解如何实现Android客户端上传文件以及Struts2服务端接收的过程。 首先,让我们从Android客户端开始。在Android中,文件上传主要涉及`HttpURLConnection`或`OkHttp`库,通过POST请求将文件内容发送到...

    spring+struts+hibernate实现文件的上传和下载

    【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...

    struts1实现文件上传和下载

    在Struts1中,文件上传主要通过`org.apache.struts.upload.FormFile`类来完成。在给定的代码片段中,`FileAction`类继承自`DispatchAction`,这是Struts1中用于处理不同请求的基类。`upLoadFile`方法是处理文件上传...

    struts2实现的多个文件上传

    下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传通常通过multipart/form-data编码类型来实现。这种编码方式将表单数据分割成多个部分,每部分包含一个...

Global site tag (gtag.js) - Google Analytics