1.前台表单设置
enctype="multipart/form-data"
2.struts.xml文件中设置上传至服务器目录
<!--struts.xml->package->action下写入 fileFolderName:自定义(标识) /upload:自定义文件名-->
<param name="fileFolderName">/upload</param>
3.后台代码实现
//自定义文件夹名
private String fileFolderName;
//接收前台上传的封面
private File cover;
//接收封面的文件名 文件名+FileName
private String coverFileName;
//接受封面文件的类型 文件名+ContentType
//private String coverContentType;
//添加图书
public String addBook() throws IOException {
//获取上传至服务器中的路径 D:\apache-tomcat-7.0.79\webapps\项目名\文件夹名
HttpServletRequest request = ServletActionContext.getRequest();
String realPath = request.getSession().getServletContext().getRealPath(fileFolderName);
//判断这个文件夹是否存在 不存在-->创建 存在-->继续使用
File file = new File(realPath);
if (!file.exists()) {
file.mkdir();
}
//将文件上传至服务器中
FileUtils.copyFile(cover, new File(realPath+"/"+coverFileName));
//获取服务器中文件路径:/dangdang_zgh/upload/download.jpg
String image = request.getContextPath()+fileFolderName+"/"+coverFileName;
System.out.println("上传的图片路径="+image);
//book对象中set封面路径
book.setCover(image);
//调用service方法 添加图书
bookService.addBook(book);
return "Success";
}
关于文件上传至服务器时文件夹的创建问题:
File file = new File(realPath);
if (!file.exists()) {
file.mkdir();
}
如果不进行下述判断,对功能的正常实现没有影响,但其本质是:
(1)如果文件夹不存在则创建;
(2)如果存在则删除原本的文件夹,继续创建新的文件夹,再将原文件夹的数据迁移至新的文件夹内。
即:判断这个文件夹是否存在 不存在–>创建 存在–>继续使用