• 第十六部分_Struts2.1文件上传详解


    文件上传要求:

    • 表单设为post
    • enctype="multipart/form-data"
    • 服务器端File对应的名字与jsp中指定的文件name相同(对于真正上传的文件), 而String *FileName对应上传的文件名(*表示jsp中文件name)
    • 添加Jar包(commons-io-1.3.2.jar),否则上传失败,抛出io相关类找不到的信息。 否则文件上传失败

    首先,写一个upload.jsp:

    引入标签库:

    <%@ taglib uri="/struts-tags" prefix="s"%>
    

    body体中(struts标签默认表单提交方式为post):

     <body> 
       
    	<s:form action="upload" enctype="multipart/form-data">
    		
    		<s:file name="file"></s:file>
    		<s:submit value="submit"></s:submit>
    	
    	</s:form>
      </body>
    

    对应的UploadAction为:

    package com.test.action;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UploadAction extends ActionSupport
    {
    	private File file; // 对应真正上传的文件
    	
    	private String fileFileName; // 对应上传的文件名
    
    	public File getFile()
    	{
    		return file;
    	}
    
    	public void setFile(File file)
    	{
    		this.file = file;
    	}
    
    	public String getFileFileName()
    	{
    		return fileFileName;
    	}
    
    	public void setFileFileName(String fileFileName)
    	{
    		this.fileFileName = fileFileName;
    	}
    	
    	@Override
    	public String execute() throws Exception
    	{
    		
    		
    		InputStream is = new FileInputStream(file);
    		OutputStream os = new FileOutputStream("E:\Desktop\" + fileFileName);
    		
    		byte[] buffer = new byte[1024];
    		int length = 0;
    		
    		while(-1 != (length = is.read(buffer)))
    		{
    			os.write(buffer, 0, length);
    		}
    		
    		os.close();
    		is.close();
    		
    		return SUCCESS;
    	}
    }
    

    结果页面很简单uploadResult.jsp:

    <body>
        Upload success~~
    </body>
    

    struts对应的配置为:

    <action name="upload" class="com.test.action.UploadAction">
    				<result name="success">/uploadResult.jsp</result>
    </action>
    

    web.xml一如既往从struts的部分开始就没变过:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      
      <filter>
      	<filter-name>struts2</filter-name>
      	<filter-class>
      		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      	</filter-class>
      </filter>
      
      <filter-mapping>
      	<filter-name>struts2</filter-name>
      	<url-pattern>/*</url-pattern>
      </filter-mapping>
      
      
    </web-app>
    

    最后引入struts2中的第三方JAR包,在原有六个包的情况下,添加commons-io-1.3.2.jar,打开http://localhost:8080/struts2/upload.jsp,选择文件即可完成上传。

     

  • 相关阅读:
    【Python入门自学笔记专辑】——面向对象编程-实例方法11.3.6
    最简单的轮播广告(原生JS)
    (转)JavaScript一:为什么学习JavaScript?
    JAVASCRIPT中经典面试题
    使用AngularJS实现简单:全选和取消全选功能
    canvas绘制经典折线图(一)
    前端总结
    PHP如何连接MySQL数据库
    PHP预定义变量
    PHP语法
  • 原文地址:https://www.cnblogs.com/Code-Rush/p/4669962.html
Copyright © 2020-2023  润新知