guokehua(@yahoo.com.cn oy Java 1010 14文件上传 2008-3-10 郭克华EE框架实战教学视频
2008-3-10 1 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 14文件上传
guokehua(@yahoo.com.cn 上传文件应该事先考虑到的问题 文件上传控件 浏览 传统方法要考虑到的问题 1010 文件编码问题 文件大小问题 文件分块问题 ·在 Struts中,这一切都变得容易 · Struts中有一个 upload包专门负责这 个工作 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 2 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 上传文件——应该事先考虑到的问题 应该事先考虑到的问题 • 文件上传控件 • 传统方法要考虑到的问题: 传统方法要考虑到的问题: • 文件编码问题 • 文件大小问题 • 文件分块问题 • 在Struts中,这一切都变得容易 中,这一切都变得容易 • Struts中有一个upload包专门负责这 个工作
guokehua(@yahoo.com.cn 了上传文件 上传文件第一步:如果表单中有文件要上传, m表单的属性: 1010 enctype=multipart/form-data 这个属性告诉 struts表单提交的数据将被编码并 且具备多个部分 ≤htm; file property=e 另外,你需要在 Action Forn中定义一个同名 1属性,注意,类型是: org.apache struts. upload FormFile 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 3 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 上传文件 • 上传文件第一步:如果表单中有文件要上传, 上传文件第一步:如果表单中有文件要上传, 表单的属性: – – enctype enctype=“multipart/form multipart/form-data” – – 这个属性告诉struts, struts,表单提交的数据将被编码并 表单提交的数据将被编码并 且具备多个部分 且具备多个部分 – – • 另外,你需要在 另外,你需要在ActionForm ActionForm中定义一个同名 中定义一个同名 属性,注意,类型是: 属性,注意,类型是: org.apache.struts.upload. org.apache.struts.upload.FormFile FormFile
guokehua(@yahoo.com.cn 了得到文件信息 getcontentType:得到HTTP协议的文 件类型 o· getFileName:得到文件名称 getel1 size:得到文件大小 008-3-10 郭克华J2E框架实战教学视频
2008-3-10 4 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 得到文件信息 • getContentType getContentType:得到HTTP协议的文 件类型 • getFileName getFileName:得到文件名称 • getFileSize getFileSize:得到文件大小
guokehua(@yahoo.com.cn 了限制文件大小 并不是任何大小的文件都适合上传 可以在 struts配置文件中,在消息资源 1010 定义之前加上一个: 来限制文件长度 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 5 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 限制文件大小 • 并不是任何大小的文件都适合上传 并不是任何大小的文件都适合上传 • 可以在struts配置文件中,在消息资源 配置文件中,在消息资源 定义之前加上一个: 定义之前加上一个: – – 来限制文件长度 来限制文件长度
guokehua(@yahoo.com.cn 了写文件 ·将文件写入硬盘 m·byte囗 FileForm getFileData(0可以 得到文件的大小 然后利用 java. io. FileOutputstrean 类来进行写文件 1·具体操作见教师的例子 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 6 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 写文件 • 将文件写入硬盘: 将文件写入硬盘: • byte[] FileForm FileForm.getFileData getFileData()可以 得到文件的大小 得到文件的大小 • 然后利用java.io.FileOutputStream FileOutputStream 类来进行写文件 类来进行写文件 • 具体操作见教师的例子 具体操作见教师的例子
guokehua(@yahoo.com.cn 了路径 文件默认写在 tomcat的bin目录下,这 不是我们需要的,我们需要将文件保存 1010 在站点根目录下的某个文件夹下 怎样得到站点根目录下的某个文件夹的 Q绝对路径? Action. getservleto-getservletCont ext. getRealPath(站点路径) 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 7 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 路径 • 文件默认写在tomcat的bin目录下,这 不是我们需要的,我们需要将文件保存 不是我们需要的,我们需要将文件保存 在站点根目录下的某个文件夹下。 在站点根目录下的某个文件夹下。 • 怎样得到站点根目录下的某个文件夹的 怎样得到站点根目录下的某个文件夹的 绝对路径? – – Action. Action.getServlet getServlet().getServletCont getServletCont ext.getRealPath getRealPath(“站点路径”)
guokehua(@yahoo.com.cn 了读入上传的文件 我们也可以不将文件写入硬盘而对上传 的文件进行读操作 1010 例如在上传的文本文件中检查是否有不 合法的词汇? FormFile. getInputstream(Q可以做 到这一点,如果支持中文,可以用 BufferedReader 具体操作见教师现场演示 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 8 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 读入上传的文件 读入上传的文件 • 我们也可以不将文件写入硬盘 我们也可以不将文件写入硬盘,而对上传 的文件进行读操作 的文件进行读操作 • 例如:在上传的文本文件中 在上传的文本文件中,检查是否有不 合法的词汇? • FormFile FormFile.getInputStream getInputStream()可以做 到这一点,如果支持中文,可以用 到这一点,如果支持中文,可以用 BufferedReader BufferedReader. • 具体操作见教师现场演示 具体操作见教师现场演示
guokehua(@yahoo.com.cn 了上传多个文件 上传多个文件时,传统的数组属性方法 已经不能起到作用 1010 我们建议的方法是:用 Array List来存 储步 探: 1将控件定义为索引 定义索引属性,可以用数组,也可以用 Array List存储 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 9 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 上传多个文件 • 上传多个文件时,传统的数组属性方法 上传多个文件时,传统的数组属性方法 已经不能起到作用 已经不能起到作用 • 我们建议的方法是:用 我们建议的方法是:用ArrayList ArrayList来存 储 • 步骤: • 将控件定义为索引 将控件定义为索引 • 定义索引属性,可以用数组,也可以用 定义索引属性,可以用数组,也可以用 ArrayList ArrayList存储