ssh-文件上传

  ssh实现文件上传用到 commons-fileupload-1.3.1.jar, commons-io-2.2.jar这两个包

  实现上传功能的页面代码

<h1>上传文件</h1>
<form action="upLoadFile" method="post" enctype="multipart/form-data">
<input type="file" value="选择文件" name="upload">
<input type="submit" value="长传文件" >
</form>

这段代码有三个地方需要注意

1. method 需要设置成post 因为get有长度的限制,所以用get一些稍大的文件无法上传

2 在form中添加这段代码

enctype="multipart/form-data"

  3 需要有一个input的type=‘file’



struts.xml中的代码是

  <!-- 上传的文件的默认大小是不能超过2M(2097152) 如果超过会报错。这段代码用于修改默认大小  -->
	<constant name="struts.multipart.maxSize" value="20971520"/>
	
	<package name="default" extends="struts-default" namespace="/">
		<action name="upLoadFile" class="userAction">
		<!-- 当文件上传成功 跳转到success.jsp -->
		<result name="success">success.jsp</result>
		<!-- 当文件上传失败 跳转到error.jsp -->
		<result name="input">error.jsp</result>
		
		<interceptor-ref name="defaultStack">
				<!-- 用与设置上传文件的类型 -->
				<param name="fileUpload.allowedExtensions">.jpg,.txt</param>
			</interceptor-ref>
		</action>
	</package>

action中的关键代码

public class UserAction extends ActionSupport implements ModelDriven<User>{

  
	private UserService userService;
//	通过注入获取userService 用于操作数据库
	 public void setUserService(UserService userService) {
		this.userService = userService;
	}
	 
//     上传的文件
//	 这是 index.jsp 中的代码 <input type="file" value="选择文件" name="upload">
//	 这两个 upload 名字需要一样
	 private File upload;
//	 表示上传文件文件的名字    必须这么写
	 private String uploadFileName;
//	 表示上传文件文件的MIME类型    必须这么写
	 private String uploadContentType;
//	 设置三个属性的 set方法 struts将三个值注入 就可以直接使用
	public void setUpload(File upload) {
		this.upload = upload;
	}
	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	
	User user=new User();
	public User getModel() {
		
		return user;
	}
	
	public String execute() throws Exception {
	     if(uploadFileName != null){
//	    	 防止用户传入文件的名字冲突 对文件的名字进行处理
	    	 String newFileName=UpLoadFileUtils.getUUidFileName(uploadFileName);
//	    	 自定义传入文件存放的位置
	    	 String path="D:\\images\\";
//	    	 创建新的文件
	    	 File file=new File(path+newFileName);
//	    	 通过拷贝 达到存储文件的目的
	    	 FileUtils.copyFile(upload, file);
	    	 
//	    	 将存储的文件的路径存入数据库 方便以后使用
	    	 user.setPath(path+newFileName);
	    	 userService.save(user);

	     }
		return SUCCESS;
	}
}

用于处理文件名字的方法

public class UpLoadFileUtils {

	 public static String getUUidFileName(String fileName){
		 int lastIndexOf = fileName.lastIndexOf(".");
		 String lastName = fileName.substring(lastIndexOf,fileName.length());
		 
		 String uuid=UUID.randomUUID().toString().replace("-", "");
		 
		 return uuid+lastName;
	 }
}
这个是完整例子  百度云链接 密码:ksse
如果有错的地方欢迎指出


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值