文件上传与下载

1.SmartUpload组件-File类

这个类封装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名、文件大小、扩展名、文件数据等信息。主要方法有:

1.publicvoid saveAs(String):将文件换名另存。

参数是以/开头的文件路径,文件将被存放于当前项目的

根目录下

2.publicString getFieldName():获取HTML表单中此

上传文件的组件的名字

3.publicString getFileName()获取上传的“文件名.扩展名”

4.publicString getFilePathName()获取上传的文件全

名称(带路径)

5.publicString getFileExt():获取文件的扩展名

6.publicint getSize():获取文件长度,单位字节


2.SmartUpload组件-Files类

1.publicint getCount():获取此次文件上传的总数目

2.publicFile getFile(int):获取指定索引处的文件

3.publiclong getSize():获取此次文件上传的总字节数


3.SmartUpload组件-Request类

这个类的功能等同于JSP内置的对象request。之所以提供这个类,是因为对于文件上传表单, 通过 JSP 内置的 request 对象无法获得表单项的值,必须通过 jspSmartUpload 组件提供的 Request 对象来获取。其主要方法有 

1.publicString getParameter(String):获取客户端提交过来的参数值

2.publicString[] getParameterValues(String):获取客户端提交的多个同名组件的值,参数是表单组件的name值


4.SmartUpload组件-SmartUpload类

1.publicfinal void initialize(PageContext):初始化方法

2.publicvoid upload()文件上传。并检测文件大小和文件类型是

否符合要求

3.publicvoid setAllowedFilesList(String)设置允许上传的文件类

型,参数可以使用“,”号隔开

4.publicvoid setMaxFileSize(long)设置每个文件允许的最大字

节数

5.publicvoid setTotalMaxFileSize(long)设置允许上传的文件总

字节数

6.publicRequest getRequest():取得Request对象,用于取得表

单组件的值

7.publicvoid setDeniedFilesList(String):限制那些类型的文件不

允许上传。参数是文件的扩展名列表,可以使用“,”号隔开

8.publicvoid setContentDisposition(null):在下载前调用。若不

设定,下载的文件如果是doc文档,浏览器将调用word打开;

如果是pdf文档,浏览器将调用Acrobat打开 


5.上传文件表单的设计

上传文件的表单必须设置以下两个属性:
method=“post”:文件上传必须使用post,因为使用get能够传送的数据大小有限制(2K字节或255个字符)
enctype=“multipart/form-data”:表明当前表单提交的数据有多个部分组成

6.示例代码

1.创建FileItem对象工厂,可以设定缓冲区大小和存放临时文件的目录
try {
DiskFileItemFactory factory =new DiskFileItemFactory();
// 2.处理表单数据,将数据封装到FileItem对象中
ServletFileUpload servletFileUpload=new ServletFileUpload(factory);
servletFileUpload.setHeaderEncoding("UTF-8");
// 3.FileItem解析request请求来封装表单张的元素和数据
List<FileItem> items=servletFileUpload.parseRequest(req);
// 4.遍历所有的文件名
Book book=new Book();
for(FileItem item:items){
System.out.println("控件名:"+item.getFieldName());
// 5.如果是普通控件
if(item.isFormField()){
// 自动将控件值填充到目标Bean
System.out.println("控件值:" + item.getString("UTF-8"));
BeanUtils.setProperty(book , item.getFieldName(), item.getString("UTF-8"));
}else{
// 6.如果是文件控件
String path=req.getSession().getServletContext().getRealPath("/upload")+separator+item.getName();
book.setImagename(item.getName());
System.out.println("绝对路径:"+path);
item.write(new File(path));
}
}
BookDao dao=new BookDaoImp();
dao.update(book);
resp.sendRedirect(home+ "/Ht_showBooks.jsp");
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值