ssh-文件上传

来源:互联网 发布:装饰器模式 java 编辑:程序博客网 时间:2024/05/17 03:02

  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
如果有错的地方欢迎指出