在网上商城项目中,需要在后台添加商品,并上传图片,是利用Struts2框架来完成的文件上传,先看一下页面的表
单显示:
jsp代码如下,其中type为文件类型,文件名为upload
商品图片:
Struts2框架实现文件上传时,文件需满足三个条件:
1.表单提交的方式需要是POST
2.表单中上传项必须有一个
3.表单中的enctype属性值需要是multipart/form-data
故在提交时,代码如下:
接下来就是常规的 *.jsp----->Action----->Service----->Dao 一系列基本操作了。应该注意的是在action中需要接受
文件相关的三个参数
//文件上传需要的参数
private File upload; //上传的文件,这里跟jsp表单中的name一致
private String uploadFileName;//接收文件上传的文件名
private String uploadContentType;//接收文件上传的文件的MIME的类型
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
最后实现文件的上传:
首先获得磁盘绝对路径,在javaweb中有介绍文件名重名,目录的分离等问题。暂时还没研究,后期学习。现在获
得路径是WebRoot下的products的路径,为磁盘绝对路径。获得路径后需创建文件(路径+文件名),再实现文件的
上传,使用工具类FileUtils.copyFile(upload,diskFile),源文件是upload,copy到服务器的路径realPath就可以了。在
加上图片的路径即可。最后将数据保存到数据库中完成文件上传整个操作。核心代码如下:
// 保存商品的方法:
public String save() throws IOException {
// 将提交的数据添加到数据库中.
product.setPdate(new Date());
// product.setImage(image);
if(upload != null){
// 将商品图片上传到服务器上.
// 获得上传图片的服务器端路径.
String path = ServletActionContext.getServletContext().getRealPath(
"/products");
// 创建文件类型对象:
File diskFile = new File(path + "//" + uploadFileName);
// 文件上传:
FileUtils.copyFile(upload, diskFile);
product.setImage("products/" + uploadFileName);
}
productService.save(product);//调用Service完成保存的操作,并将数据保存到数据库
return "saveSuccess";
}
adminProduct_findAll.action?page=1