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的方式;

  • 相关阅读:
    HttpClient
    充值保存
    button 样式
    创建窗口
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114767.html
Copyright © 2011-2022 走看看