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中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...
FormFile对象包含了上传文件的名称、类型、大小以及临时存储在服务器上的路径。 三、批量上传原理 批量上传涉及到同时处理多个文件的上传。用户在前端选择多个文件后,这些文件会被封装成多个FormFile对象,通过...
`FormFile`是Struts的`org.apache.struts.action.ActionForm`类的一个属性,它提供了对上传文件的封装,包括文件名、临时存储路径、文件类型等信息。在用户提交包含文件上传的表单时,`FormFile`对象会被Struts的...
用户上传文件后,表单提交至`/fileManage/upload`这个URL地址,并由Struts2框架调用`UploadAction`的`execute()`方法进行处理。 ### Struts2文件下载知识点 虽然给定文件的内容中没有直接提及文件下载的实现方法,...
- `FormFile`: 用于封装上传文件的信息,包括文件名、类型、大小等。 ### 4. 配置文件 在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`<form-beans>`部分,指定文件上传的临时存储...
Struts1使用了`org.apache.struts.upload.FormFile`类来处理文件上传。当用户提交包含文件的表单时,服务器端的ActionForm会接收到这个FormFile对象,通过它获取到文件的内容和元数据。然而,原生的Struts1并不支持...
5. **文件大小转换**:根据文件的大小单位(Byte, KB, MB),进行相应的格式化输出,以便于用户理解上传文件的实际大小。 #### 示例代码解析 - **文件名的生成**:利用当前时间戳生成唯一的文件名,确保每个上传的...
Struts1提供了`org.apache.struts.upload.FormFile`类来处理上传的文件。你可能需要重写`execute()`方法,代码如下: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, ...
使用`org.apache.struts.upload.FormFile`对象来存储上传的文件信息。例如: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse ...
1. **修改配置文件**: 在`struts-config.xml`中,可以通过设置`maximumSize`属性来调整最大上传文件大小。 ```xml ``` 2. **使用第三方库**: 如Apache Commons FileUpload组件,它可以更加灵活地控制文件...
FormFile是Struts1用来处理上传文件的类,它可以获取文件名、内容类型、大小等信息。在这个例子中,使用了一个ArrayList来存储用户选择的所有文件: ```java public class BatchUploadForm extends ActionForm { ...
2. 创建上传文件的JSP页面。 3. 编写Action类,使用Apache Commons FileUpload处理文件。 4. 验证和保存上传的文件。 5. 显示上传结果。 通过这种方式,你可以构建一个灵活且易于维护的文件上传系统。记住,文件...
你需要添加一个类型为`java.io.File`或`org.apache.struts.upload.FormFile`的属性来处理上传的文件。 3. `JSP页面`:用于创建HTML表单,包括文件输入字段`<input type="file">`。用户通过这个表单选择要上传的文件...
如果需要上传文件,该类中的相应属性应该声明为`org.apache.struts.action.FormFile`类型。Struts框架会自动将客户端上传的文件封装到FormFile对象中。 ```java public class BookForm extends ActionForm { ...
配置文件中可以指定上传文件的存储路径,例如在struts-config.xml中定义一个action-mapping,设置其`parameter`属性为文件上传的目录。为了更好地管理上传的文件,可以考虑创建多级目录结构,如按照日期或用户ID来...
- 可以通过`ActionContext`获取到上传文件的信息,如文件名、大小、类型等,然后保存到服务器。 **SmartUpload上传** SmartUpload是一个轻量级的Java库,专门用于处理文件上传。相比Struts,SmartUpload提供了...
本篇将详细讲解如何实现Android客户端上传文件以及Struts2服务端接收的过程。 首先,让我们从Android客户端开始。在Android中,文件上传主要涉及`HttpURLConnection`或`OkHttp`库,通过POST请求将文件内容发送到...
【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...
在Struts1中,文件上传主要通过`org.apache.struts.upload.FormFile`类来完成。在给定的代码片段中,`FileAction`类继承自`DispatchAction`,这是Struts1中用于处理不同请求的基类。`upLoadFile`方法是处理文件上传...
下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传通常通过multipart/form-data编码类型来实现。这种编码方式将表单数据分割成多个部分,每部分包含一个...