一、前言
在项目中遇到了上传文件的功能,虽然这个功能还是比较思路清楚的,在java中Struts2已经为我们设计好了File这个类,所以我们需要做的就是把所需要的参数带进去获取到就行了。在本篇博客中,小编主要就讲解一下各个方法的实用,以及上传文件的流程。
二、核心思路
三、代码实现
前台
<td class="ta_01" bgColor="#ffffff" colspan="3">
<!-- 文件上传-Ares-2016年12月8日16:51:02 -->
<input type="file" name="upload" />
</td>
后台的Action,这里要注意的是upload,和前台表单中的属性名字相同。
//文件上传需要的参数
private File upload; //上传的文件 upload,和表单中的属性名字相同
private String uploadFileName; //接收文件上传的文件名
private String uploadContextType; //接收文件上传的文件的MIME的类型
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public void setUploadContextType(String uploadContextType) {
this.uploadContextType = uploadContextType;
}
//保存商品方法
public String save() throws IOException{
//调用B层保存方法
Date time=new java.sql.Date(new java.util.Date().getTime());
product.setPdate(time);
if(upload!= null){
//获得文件上传的磁盘的绝对路径
String realPath = ServletActionContext.getServletContext().getRealPath("/products");
//创建一个文件
File diskFile = new File(realPath +"//" +uploadFileName);
//文件上传
FileUtils.copyFile(upload, diskFile);
product.setImage("products/"+uploadFileName);
}
productService.save(product);
return "saveSuccess";
}
B层
//B层保存商品的方法
public void save(Product product) {
productDao.save(product);
}
D层
//D层保存商品的方法
public void save(Product product) {
this.getHibernateTemplate().save(product);
}
四、小结
小编通过这个只是实现了上传的功能,但是具体的一些问题比如,文件名重名,目录分离等还是需要在后面的操作中完成,这些内容小编会在后面的博客中向大家分享出来,最后会整理出一个相对比较完整,功能全的上传的类,然后分享给大家,另外有什么不足的地方还是请各位指出。