由于jspsmartupload上传文件,当前端页面没有file控件时,后端用jspsmartupload控件upload时将会走入一个死循环。现在采用struts自己提供的功能实现文件的上传。
1、前端页面upload.jsp
<html:form action="/filesave.do" styleId="formItem" method="post" enctype="multipart/form-data">
<INPUT class='input-file' type="file" name="theFile">
</html:form>
2、struts-config.xml文件配置
<form-bean name="UploadForm" type="yhp.test.web.UploadForm" />
<action input="/upload.jsp" name="UploadForm" path="/filesave" scope="request" type="yhp.test.web.UploadAction" validate="false">
<forward name="success" path="/success.jsp" />
<forward name="error" path="/error.jsp" />
</action>
3、UploadForm.java文件
package yhp.test.web;
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.ActionForm;
public class UploadForm extends ActionForm {
protected String theText; //使用protected ,其它需要上传的form可以继承此form
protected boolean writeFile = true;
protected FormFile theFile;
protected String filePath;
public String getTheText() {
return theText;
}
public void setTheText(String theText) {
this.theText = theText;
}
public FormFile getTheFile() {
return theFile;
}
public void setTheFile(FormFile theFile) {
this.theFile = theFile;
}
public void setWriteFile(boolean writeFile) {
this.writeFile = writeFile;
}
public boolean getWriteFile() {
return writeFile;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getFilePath() {
return filePath;
}
public void reset() {
writeFile = false;
}
}
4、UploadAction.java文件
package yhp.test.web;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class UploadAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws
Exception {
if (actionForm instanceof UploadForm) {
// 获取上传的目录
String path = getServlet().getServletContext().getInitParameter("UPLOADPATH");
File f = new File(path);
if (!f.isDirectory()) {
f.mkdir();
}
UploadForm theForm = (UploadForm) actionForm;
String text = theForm.getTheText();
FormFile file = theForm.getTheFile();
String fileName = file.getFileName();
String contentType = file.getContentType();
boolean writeFile = theForm.getWriteFile();
String desFileName=path fileName ;
String size = (file.getFileSize() + " bytes");
try {
InputStream stream = file.getInputStream();
OutputStream bos = new FileOutputStream(strFileName);
byte[] buffer = new byte[file.getFileSize()];
stream.read(buffer);
bos.write(buffer);
stream.close();
bos.close();
return actionMapping.findForward("success");
}
catch (FileNotFoundException fnfe) {
return actionMapping.findForward("success");
}
catch (IOException ioe) {
return actionMapping.findForward("success");
}
catch(Exception eo){
return actionMapping.findForward("error");
}
}else{
return actionMapping.findForward("error");
}
}
}
分享到:
相关推荐
本文将详细讲解Struts2框架下三种不同的文件上传方式:copy模式、字节流上传和字符流上传。 1. Copy模式文件上传: Copy模式是Struts2提供的一种简单易用的文件上传方式。它通过Struts2的`FileUploadInterceptor`...
在本项目中,我们将学习如何利用Struts框架实现多文件上传的功能,这对于初学者来说是一个很好的实践项目,能够帮助理解和掌握Struts的核心概念。 首先,了解文件上传的基本原理。在Web应用中,文件上传通常涉及到...
5. **安全性考虑**:在实现文件上传下载功能时,需要注意防止SQL注入、跨站脚本攻击(XSS)以及文件路径遍历攻击。对于上传的文件,应检查其扩展名和内容,确保它们不包含恶意代码。同时,下载时应避免直接暴露文件...
在这个"Struts文件上传示例"中,我们将深入探讨如何在Struts框架下实现文件上传功能,以及相关的关键知识点。 首先,理解文件上传的基本流程至关重要。在Web应用中,用户通过表单选择本地文件,然后提交到服务器。...
在Struts框架中,文件上传和下载是常见的功能需求,尤其在处理用户数据交互时。 一、文件上传 1. Struts1中的文件上传:在Struts1中,文件上传主要依赖于`commons-fileupload`和`commons-io`两个库。首先需要在`...
在Struts2中实现文件上传,可以帮助开发者处理用户从浏览器端上传的文件,例如图片、文档等。以下是关于Struts2文件上传的详细知识点: 1. **依赖库**: 实现文件上传,首先需要引入Struts2的上传插件,即`struts2...
通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...
本项目案例“用Struts框架实现单文件上传功能”旨在帮助初学者掌握如何在Struts框架下处理文件上传的需求,这对于理解和实践Java Web开发中的常见操作非常有帮助。 首先,我们需要理解Struts框架的核心组件。Action...
总的来说,"Struts-文件上传下载.rar"这个压缩包可能包含了一个完整的示例,演示了如何在Struts框架下实现文件上传和下载的功能。通过学习和分析其中的代码,开发者可以更好地理解Struts框架处理文件操作的机制,...
2. **创建Struts Action**:在Struts框架中,我们需要创建一个Action类来处理文件上传请求。这个Action需要实现文件接收和保存的功能。在Struts配置文件(struts.xml)中,为该Action定义一个对应的URL映射。 3. **...
在"struts-文件上传"这个主题中,我们将探讨如何在Struts框架下实现文件上传功能,这是Web应用中常见的需求,比如用户可能需要上传图片、文档等。 文件上传通常涉及到以下几个关键步骤: 1. **表单设计**:在HTML...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
在这个“Struts框架文件上传下载案例”中,我们将探讨如何在Struts2框架下实现文件的上传和下载功能,这对于Web应用来说是非常常见的需求。 文件上传功能是Web应用中允许用户从本地计算机选择文件并将其传输到...
7. **安全考虑**:在实现文件上传时,务必注意安全性,避免文件覆盖、恶意文件上传等问题。可以对上传的文件名进行重命名,防止覆盖现有文件,对文件类型进行检查,禁止上传危险文件如`.jsp`、`.exe`等。 8. **性能...
为了实现在Struts 1.2框架下的文件上传进度条功能,本案例使用了以下技术栈: 1. **Java版本**:1.5.x(兼容性设置为1.4) 2. **IDE**:MyEclipse 5.1.1 3. **框架**: - **SpringSide**:2.0-RC1-allinone包 - **...
3. **Struts配置**:在`struts-config.xml`中配置对应的`<action>`元素,指定处理文件上传请求的`Action`类。 4. **Action类**:编写`Action`类,处理文件上传请求。这里需要使用第三方库如Apache Commons ...
在这个“Struts1实现的文件上传”项目中,我们将深入探讨如何在Struts1框架下实现文件上传功能,并不涉及文件下载的部分。 首先,理解文件上传的基本流程是至关重要的。在Web应用中,用户通过HTML表单选择本地文件...
以上就是SSH框架中使用Struts2和Hibernate实现图片上传的主要知识点,涵盖了Web请求处理、ORM框架、文件上传、数据库操作以及前端交互等多个方面。实际项目开发时,还需要结合具体的业务需求和安全规范进行详细设计...
在Struts 2框架中,文件上传功能的实现主要依赖于`CommonsFileUpload`组件。`CommonsFileUpload`通过将HTTP请求中的数据部分保存到服务器端的临时文件夹中,再由Struts 2框架的`fileUpload`拦截器处理这些临时文件,...
在Struts1框架中实现文件上传功能是一项常见但又具有一定技术挑战的任务。下面将详细解析文件上传的实现过程,包括关键类的使用、文件处理逻辑以及异常处理等方面。 #### Struts1框架简介 Struts1是Apache Struts的...