1. 文件上传下载展示和思路
(1) 图片的上传,是把图片数据以二进制的方式放入数据库,还是把图片上传到服务器的某个目录下,数据库记录这个目录?哪种方式好?
数据库记录比较好
(2) 图片的上传下载在java中有哪些jar包支持?
commons-fileupload,commons-io
2. 开始上传并理解上传API的作用
(1) 简述文件上传的步骤
修改视图层,将form表单的上传类型改为enctype=“multipart/form-data”
修改控制层:创建FileItemFactory,第二步,创建ServletFileUpload对象,利用其parseRequest方法将其封装成fileItem对象中
遍历集合
(2) FileItem类的方法有哪些,分别是什么意思?
isFormField():是否是file表单项,是file false,不是file true
getFieldName():表单项name的属性值
getString():对于非file表单项,value的属性值,对于file表单项,文件内容
getName():对于file表单项,是上传文件的名称,对于非file表单项,返回null
getContentType():对于file表单项,是指文件上传类型,非file表单项,返回null
getSize():对于file表单项,是指文件大小,非file表单项,是指name的长度
3. 上传文件到指定目录
(1) 如何上传文件到指定目录?写出步骤
第一步:判断是否是文件
第二步:创建文件 File dir=new File(“d:/upload”); string name=item.getName();
第三步:File file=new File(dir,name);
第四步:item.write(file);
4. 完善上传文件到指定目录
(1) 本节课完善了文件上传的哪些点?实现代码是什么?
上传文件大小限制
限制上传文件类型
对于文件的重命名
sfu.setHeaderEncoding("utf-8");
//设置文件的大小
sfu.setFileSizeMax(40*1024);//设置单个文件大小
sfu.setSizeMax(10*16*1024);//设置多个文件大小
//通过ServletFileUpload对象实现上传操作,将客户端一个个表单项封装到一个个FileItem中
List itemList=null;
try {
itemList= sfu.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
request.setAttribute("mess", "只能上传小于16kb的文件");
request.getRequestDispatcher("/add.jsp").forward(request, response);
return;
}
String contentType = item.getContentType();//images/jpg
photoType=item.getContentType();
if(!"image/jpeg".equals(contentType) && !"image/gif".equals(contentType)){
request.setAttribute("mess", "只能上传jpg和gif文件");
request.getRequestDispatcher("/add.jsp").forward(request, response);
return;
}
//指定上传的文件名
realName = item.getName();
String type = realName.substring(realName.lastIndexOf("."));
UUID uuid= UUID.randomUUID();
photoName=uuid.toString()+type;
//指定上传的文件夹和文件名
5. 保存上传信息到数据库
(1) 本节课要往数据库里面存哪些数据?这些数据的作用是什么?
Photoname :文件重命名的
Realname:真实名称
Phototype:文件类型