zoukankan      html  css  js  c++  java
  • Struts2 单文件上传

    Struts2 提供了更为简便的文件上传机制,将文件上传的复杂操作都封装到commons-fileupload.jar 、commons-io.jar两个jar包中,然后再程序中使用简单的几句代码就能实现文件上传;

    HTML:

    <form action="${pageContext.request.contextPath}/hello/upload_uploadImage.do" enctype="multipart/form-data" method="post">
       			图片:<input type="file" name="image"  />
       			<input type="submit" value="上传" />
       		</form> 

    Struts.xml:

    <action name="upload_*" class="com.actions.UploadAction" method="{1}">
    	 			<result name="message">/WEB-INF/message.jsp</result>
    	 		</action>

    action:

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    
    public class UploadAction {
    
    	//只要File的名称与html中File控件的name相一致就可以获取到这个文件
    	private File image;
    	//只要使用file的name+FileName就可以获取到上传文件的名称
    	private String imageFileName;
    	//只要使用file的name+ContentType就可以获取到上传文件的类型
    	private String imageContentType;
    	private String message;
    
    	public String uploadImage() {
    		try {
    			String realPath = ServletActionContext.getServletContext().getRealPath("/images");
    			File filePath = new File(realPath);
    			if (!filePath.exists()) {
    				filePath.mkdirs();
    			}
    			System.out.println("文件存放路径:" + realPath);
    			if (image != null) {
    				System.out.println("文件名:" + imageFileName + ",文件类型:" + imageContentType);
    				File saveFile = new File(filePath, imageFileName);
    				//默认Struts2会将文件上传到Struts2临时空间中,当Action执行完成以后将文件删除;
    				//要实现文件传,只需要将文件从临时空间copy到存储空间即可 
    				FileUtils.copyFile(image, saveFile);
    				message="文件上传成功!";
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    		return "message";
    	}
    
    	public File getImage() {
    		return image;
    	}
    
    	public void setImage(File image) {
    		this.image = image;
    	}
    
    	public String getImageFileName() {
    		return imageFileName;
    	}
    
    	public void setImageFileName(String imageFileName) {
    		this.imageFileName = imageFileName;
    	}
    
    	public String getImageContentType() {
    		return imageContentType;
    	}
    
    	public void setImageContentType(String imageContentType) {
    		this.imageContentType = imageContentType;
    	}
    
    	public String getMessage() {
    		return message;
    	}
    
    	public void setMessage(String message) {
    		this.message = message;
    	}
    
    }
    注:通过 <constant name="struts.multipart.maxSize" value="10701096"></constant>  可以设置上传文件的大小;

    注:对于大文件上传,不推荐使用Web的方式进行上传,可以使用socket的方式;

  • 相关阅读:
    POJ1087 A Plug for UNIX 网络流
    HDU4405 Aeroplane chess 期望DP
    POJ1062 昂贵的聘礼 区间枚举
    HDU4403 A very hard Aoshu problem 枚举
    HDU4407 Sum 容斥定理
    POJ2750 Potted Flower 线段树+DP
    软件项目开发流程以及人员职责
    10款最流行的开源Web设计工具
    C# 把\\r\\n替换为\r\n
    jquery validation 用到的输入验证正则表达式
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114767.html
Copyright © 2011-2022 走看看