`
javne
  • 浏览: 67522 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts上传

阅读更多
public ActionForward upLoad(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
		FileForm fileForm=(FileForm)form;
		List<FileForm.myFile> files=fileForm.getImportFileList();
		
			for(int i =0;i<files.size();i++){
			FileForm.myFile uploadFile = files.get(i);
            FormFile file = uploadFile.getFile();
            
            if(file==null||file.getFileName()==null||"".equals(file.getFileName())){
                System.out.println("file is null");
                continue;//这里判断JSP页面中的input框是否有值
               // return new  ActionForward(request.getHeader("Referer"),true);
            }
            else{
            	 String fileName = file.getFileName();
                 int fileSize = file.getFileSize();
                 byte[] fileDate = file.getFileData();
//下面这句得到服务器上的上传目录+文件名
                 String path=this.getServlet().getServletContext().getRealPath("/")+UPLOAD_FOLDER+fileName;
           
                 UploadUtil.saveFile(path,fileDate,fileSize,File_DEST);//调用uplodautil中的方法上传文件
                 file.destroy();
                       }
        }

		
		return mapping.findForward("success");
	}

 formbean:

public class FileForm extends ActionForm {
	/*
	 * Generated fields
	 */
public	class myFile {
		private FormFile file;
	    public FormFile getFile() {
	        return file;
	    }
	    public void setFile(FormFile file) {
	        this.file = file;
	    }
	}

	public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.apache.struts.webapp.upload.MaxLengthExceeded";
	protected List<myFile> importFile;
	public FileForm()
	{
		importFile=new ArrayList<myFile>();
		importFile.add(0,new myFile());//初始化页面只有一个input
		
	}
	/*
	 * Generated Methods
	 */

	/**
	 * Method validate
	 * 
	 * @param mapping
	 * @param request
	 * @return ActionErrors
	 */
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		ActionErrors errors=new ActionErrors();
	     Boolean maxLengthExceeded = (Boolean) request.getAttribute(
                 MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);

if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue()))

{
 errors.add("文件", new ActionMessage("too big"));
}
return errors;

/*if (null == importFile.getFileName() || "".equals(theFile.getFileName())) {   

	errors.add("theFileError", new ActionMessage("errors.upload.file"));  

	}*/ 

	

	}

	/**
	 * Method reset
	 * 
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}

	public List<myFile> getImportFileList() {
		return importFile;
	}

	public void setImportFileList(List<myFile> importFile) {
		this.importFile = importFile;
	}

	public myFile getImportFile(int index) {
			int size = importFile.size(); 
			if (index > size-1) { 
			for (int i=0;i<index-size+1;i++){ 
				importFile.add(new myFile()); 
			} 
			} 
			return importFile.get(index); 
	}

	public void setImportFile(int index,FormFile file) {
		 myFile element= new myFile();
		 element.setFile(file);
		this.importFile .add(index, element);
	}





}

  JSP页面:

 <body>

        <html:form action="/file.do?method=upLoad"  method="post" enctype="multipart/form-data">
	
           
            <%--<logic:iterate id="importFile" name="fileForm" property="importFileList" indexId="index">
            <html:file property="file" name="importFile" indexed="true"/><html:errors property="theFile"/><br/>
            </logic:iterate>--%>
            <input type="file" name="importFile[0].file"/><br>
            <input type="file" name="importFile[1].file"/><br>
            <input type="file" name="importFile[2].file"/><br>
            <input type="file" name="importFile[3].file"/><br>
            <input type="file" name="importFile[4].file"/><br>
            <input type="file" name="importFile[5].file"/><br>

    
  
            <html:submit/><html:cancel/>

            

        </html:form>

    </body>

 uploadUtil 类:

package com.yourcompany.struts.action;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class UploadUtil {
	private static final String DATABASE_DEST = "database";

	private static final String FILE_DEST = "file";

	private static final int MAX_SIZE = 1024 * 1024;

	private static final String[] TYPES = { ".jpg", ".gif", ".zip", ".rar" };

	public static void saveFile(String fileName, byte[] fileData, int size,
	String dest) throws FileNotFoundException, IOException {

		if (!checkSize(size)) {
			throw new IOException(size + " is too large !");
		}

		if (!checkType(fileName)) {
			throw new IOException("Unvaildate type !");
		}

		if (dest.equals(DATABASE_DEST)) {
			saveToDb(fileName, fileData);
		}

		if (dest.equals(FILE_DEST)) {
			saveToFile(fileName, fileData);
		}

	}

	private static void saveToDb(String fileName, byte[] fileData) {

	}

	private static void saveToFile(String fileName, byte[] fileData)
	throws FileNotFoundException, IOException {
		OutputStream o = new FileOutputStream(fileName);
		o.write(fileData);
		o.close();
	}

	public static void delFile(String fileName, String dest)
	throws NullPointerException, SecurityException {
		if (dest.equals(DATABASE_DEST)) {
			delFromDb(fileName);
		}

		if (dest.equals(FILE_DEST)) {
			delFromFile(fileName);
		}

	}

	private static void delFromDb(String fileName) {

	}

	private static void delFromFile(String fileName)
	throws NullPointerException, SecurityException {

		File file = new File(fileName);
		if (file.exists())
			file.delete();
	}

	private static boolean checkSize(int size) {
		if (size > MAX_SIZE)
			return false;
		return true;

	}

	private static boolean checkType(String fileName) {
		for (int i = 0; i < TYPES.length; i++) {
			if (fileName.toLowerCase().endsWith(TYPES[i])) {
				return true;
			}

		}
		return false;

	}

}

 

分享到:
评论

相关推荐

    struts上传struts上传

    在Struts框架中,文件上传功能是非常常见且实用的特性,尤其在处理用户需要上传图片、文档等数据时。然而,Struts的文件上传也存在一些安全风险,如著名的Struts2远程代码执行漏洞。接下来,我们将深入探讨Struts...

    struts 上传 和 smartupload上传

    **Struts上传** Struts是Apache软件基金会下的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。在Struts 1.x版本中,处理文件上传主要依赖于`org.apache.struts.upload.FormFile`...

    struts上传文件(图片/附件)

    struts上传文件(图片/附件),希望对初学struts的同学们有帮助。如果有事么不足,请大家多指教。

    Struts 上传下载

    Struts上传 #### 1.1 ActionForm 在Struts中,`ActionForm` 类是用于收集用户输入的数据。对于文件上传,我们需要创建一个继承自 `org.apache.struts.upload.FormFile` 的类,例如 `UploadForm`,在这个类中定义一...

    struts上传问题研究

    在"struts上传问题研究"这个主题中,我们将深入探讨Struts2框架中的文件上传功能,以及可能遇到的问题和解决方案。 文件上传是Web应用中常见的功能,Struts2通过Action类的`@FileUpload`注解或`@Params`注解支持...

    struts上传与下载

    在Struts中,文件上传和下载是常见的功能需求,尤其在构建动态网站或Web应用时。 文件上传是指用户通过网页界面将本地文件发送到服务器的过程。在Struts中,这通常涉及到以下关键知识点: 1. **ActionForm**:...

    struts上传多文件

    在实际应用中,有时我们需要同时上传多个文件,这在Struts中是可以实现的。本篇文章将深入讲解如何在Struts框架中实现多文件上传。 首先,了解Struts2文件上传的基本原理。Struts2使用了Apache的Commons FileUpload...

    基于struts上传头像功能

    在本项目"基于Struts上传头像功能"中,我们关注的核心是利用Struts实现用户头像的上传,并在上传后能够实时更新显示。这个功能对于社交网络、论坛等用户交互性强的网站尤为重要,因为它允许用户个性化自己的在线形象...

    struts上传.rar

    在本压缩包"struts上传.rar"中,重点涉及的是Struts框架中的文件上传功能。文件上传是Web应用中常见的功能,允许用户上传文件到服务器,例如图片、文档等。在Struts中实现文件上传,我们需要理解以下几个关键知识点...

    struts上传下载源代码

    以下是对Struts上传下载源代码的详细解释: 1. **struts-config.xml配置**: 在Struts配置文件`struts-config.xml`中,可以看到针对上传、下载、列表和删除操作的四个`&lt;action&gt;`元素。这些元素定义了不同操作的...

    struts 上传案例(单个上传,批量上传)

    首先,我们要了解Struts上传文件的基本原理。它基于Servlet API中的`Part`接口,通过`HttpServletRequest`对象获取上传的文件。在Struts2中,这个过程由`CommonsFileUpload`库支持,这是一个Apache提供的处理文件...

    struts上传下载实例

    在这个"Struts上传下载实例"中,我们将会探讨如何在Struts框架下实现文件的上传和下载功能,这对于开发涉及用户交互和数据交换的Web应用来说至关重要。 首先,让我们了解上传功能。在Struts中,文件上传主要依赖于`...

    struts上传下载例子

    这个"struts上传下载例子"展示了如何在Struts中实现文件上传和下载的功能,这对于任何处理用户数据交互的Web应用都是必不可少的。下面我们将深入探讨相关知识点。 首先,我们来理解MVC模式。在MVC架构中,模型...

    struts上传(已解决中文问题)

    在Struts框架中处理文件上传功能是一项常见的任务,但中文文件名在上传过程中可能会遇到乱码问题。这个问题通常与字符编码设置、服务器配置以及Struts的配置有关。 首先,让我们深入了解一下文件上传的基本原理。在...

    Struts上传图片操作

    以下是对Struts上传图片操作的详细说明。 首先,我们需要在Struts配置文件(struts-config.xml)中添加相应的Action配置,指定处理文件上传请求的Action类。例如: ```xml ``` 这里的`/uploadImage`是URL...

    struts 上传组件使用方法

    以下是对Struts上传组件的详细解释和使用方法。 ### 一、Struts上传组件介绍 Struts的上传功能主要由两个关键类实现:`org.apache.struts.upload.FormFile`和`org.apache.struts.action.ActionForm`。`FormFile`类...

    Struts上传图片.rar

    首先,理解Struts上传图片的核心在于`struts2-convention-plugin`和`struts2-core`这两个核心库。`struts2-convention-plugin`提供了自动映射Action类和URL的规则,而`struts2-core`包含了处理HTTP请求和响应的核心...

    struts上传图片原代码

    在这个"struts上传图片原代码"中,我们可以看到Struts框架如何处理用户通过网页上传图片的流程。以下是关于这个主题的详细知识点: 1. **ActionForm类**: - ActionForm是Struts框架中用于在控制器和视图之间传递...

    实现Struts上传多个文件

    ### 实现Struts上传多个文件 在开发基于Struts框架的应用程序时,有时我们需要实现文件上传功能,尤其是在需要用户上传多张图片的情况下。本篇内容将详细介绍如何在Struts项目中实现多文件上传,并提供相应的代码...

Global site tag (gtag.js) - Google Analytics