欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWEB SSH文件上传

程序员文章站 2022-05-08 17:02:19
...

一.提交表单的<form> method属性必须为post  并且添加enctype="multipart/form-data" 属性

前台:

<td>上传资质:</td>
	<td>
		<input type="file" name="upload"> 					
	</td>

  

 UploadUtils工具类
package com.home.utils;

import java.util.UUID;

/**
 * 文件上床的工具类
 * @author Administrator
 *
 */
public class UploadUtils {
	/**
	 * 传入文件名称,返回唯一的名称
	 * @param filename
	 * @return
	 */
	public static String getUUIDName(String filename){
		//先查找 从后往前找
		int index = filename.lastIndexOf(".");
		//截取后缀名
		String lastname = filename.substring(index,filename.length());
		//System.out.println(filename);
		//唯一字符串
		String uuid = UUID.randomUUID().toString().replace("-", "");//默认带有-
		
		return uuid+lastname;
	}
	public static void main(String[] args) {
		String filename = "gril.jsp";
		System.out.println(getUUIDName(filename));
	}
}

  domain等文件中添加文件上传路径属性

 

  WEB层代码(连同增加客户一起)

/**
	 * 文件上传,需要在Action类中定义成员的属性,命名是有规则的!!
	 * private File upload;  //表示要上传的文件(与前台name一致) io包的File类
	 * private String uploadFileName; //表示上传文件的名称(没有中文乱码--已解决)
	 * private String uploadContentType;//表示上传文件的MIME类型
	 * 提供set方法,拦截器就注入值了
	 */
	private File upload;
	private String uploadFileName;
	private String uploadContentType;

	public void setUpload(File upload) {
		this.upload = upload;
	}

	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	
	public String save() throws IOException{
		//做文件的上传,说明用户选择了上传的文件
		if (uploadFileName!=null) {
			//打印
			//System.out.println("文件名称:"+uploadFileName);
			System.out.println("文件类型:"+uploadContentType);
			//把名称处理一下
			String uuidname = UploadUtils.getUUIDName(uploadFileName);
			//把文件上传到D:\\Tomcat8.0\\webapps\\upload
			String path = "D:\\Tomcat8.0\\webapps\\upload\\";
			//创建file对象
			File file = new File(path+uuidname);
			//简单方式
			FileUtils.copyFile(upload, file);//导org.apache.commons.io的包
			
			//把文件上传的路径,保存到客户表中
			customer.setFilepath(path+uuidname);
		}
		customerService.save(customer);
		return "save";
	}

  

**注

  1.文件大小非常有限(默认2097152为2M),可以自行设置

在struts.xml文件中添加 

<!-- 设置上传文件总大小 -->
	<constant name="struts.multipart.maxSize" value="20971520"></constant>

  

  2.也可以设置允许的扩展名

在struts.xml文件中的上传文件action标签中添加

<!-- 引入默认拦截器 -->
			<interceptor-ref name="defaultStack">
				<!-- 决定上传文件的类型 -->
				<param name="fileUpload.allowedExtensions">.jpg,.txt</param>
			</interceptor-ref>