• 1. 文件上传下载
  • 2. 内容文件上传下载基本原理 文件流的介绍File、FileInputStream、FileOutputStream 、文件的读写 jspSmartUpload的API 示例: 复制文件的示例 jspSmartUpload 多文件上传示例 jspSmartUpload 文件下载示例
  • 3. 文件上传下载基本原理?文件上传下载就是把通过文件的读写,经过网络把文件从一个地方复制到另一个地方。 文件上传从客户端读取文件—》形成文件流—》通过网络传输到服务器端——》然后创建文件,写文件流到文件的一个过程 文件下载从服务端读取文件——》形成文件流—》通过网络传输到服务器端——》然后创建文件,写文件流到文件的一个过程
  • 4. 文件上传下载?文件的读写—》复制文件流程图 File file =new File(“C:\\doc”)一个文件的路径全名(C:\\a.doc)第一步第二步:根据路径名得到要读取的文件 In = new FileInputStream(file)第三步:把文件读到文件流中 Byte[] buffer = new byte(1024) f In = in.read(buffer) 第四步:把文件读到缓存中 While(in.readnext()!=-1){in.read(buffer); Out.write(buffer)}Out.write(outfile);第五步:把输入流存到输出流第六部步:把输出流写到文件中
  • 5. 文件上传下载?文件上传下载的基本原理根据源路径名得到文件File目标文件名读取文件流:FileinputStram 二进制流二进制流,Http,TCP/IP协议 文件流:FileinoutStram 二进制流写入客户端服务端
  • 6. 支持文件上传下载的组件jspSmartUpload FileUpload Apache J2KUpload java2000 cos fastupload
  • 7. jspSmartUpload组件APIFile类 方法名作用原型saveAs()将文件另存为Public void saveAs(String destFilePathName)或者public void saveAs(java.lang.String destFilePathName, int optionSaveAs) destFilePathName是另存的文件名,optionSaveAs是另存的选项,该选项有三个值,分别是SAVEAS_PHYSICAL,SAVEAS_VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系统的根目录为文件根目录另存文件,SAVEAS_VIRTUAL表明以Web应用程序的根目录为文件根目录另存文件,SAVEAS_AUTO则表示让组件决定,当Web应用程序的根目录存在另存文件的目录时,它会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL
  • 8. jspSmartUpload组件APIFile类 方法名作用原型isMissing这个方法用于判断用户是否选择了文件,也即对应的表单项是否有值。选择了文件时,它返回false。未选文件时,它返回truepublic boolean isMissing()getFieldName 取HTML表单中对应于此上传文件的表单项的名字public String getFieldName() getFileName取文件名(不含目录信息) public String getFileName()
  • 9. jspSmartUpload组件APIFile类 方法名作用原型getFilePathName取文件全名(带目录)public String getFilePathNamegetFileExt取文件扩展名(后缀)public String getFileExt() getSize取文件长度(以字节计)public int getSize() getBinaryData 取文件数据中指定位移处的一个字节,用于检测文件等处理public byte getBinaryData(int index)。其中,index表示位移,其值在0到getSize()-1之间。
  • 10. jspSmartUpload组件APIFiles类 方法名作用原型getCount取得上传文件的数目public int getCount()getFile取得指定位移处的文件对象File(这是com.jspsmart.upload.File,不是java.io.File,注意区分)。 public File getFile(int index)。其中,index为指定位移,其值在0到getCount()-1之间。 getSize取得上传文件的总长度,可用于限制一次性上传的数据量大小。 public long getSize() getCollection将所有上传文件对象以Collection的形式返回,以便其它应用程序引用,浏览上传文件信息。public Collection getCollection()
  • 11. jspSmartUpload组件APIFiles类 方法名作用原型getEnumeration将所有上传文件对象以Enumeration(枚举)的形式返回,以便其它应用程序浏览上传文件信息。public Enumeration getEnumeration()
  • 12. jspSmartUpload组件APIRequest类 方法名作用原型getParameter获取指定参数之值。当参数不存在时,返回值为nullpublic String getParameter(String name)。其中,name为参数的名字。getParameterValues 当一个参数可以有多个值时,用此方法来取其值。它返回的是一个字符串数组。当参数不存在时,返回值为null。原型:public String[] getParameterValues(String name)。其中,name为参数的名字。getParameterNames 取得Request对象中所有参数的名字,用于遍历所有参数。它返回的是一个枚举型的对象。public Enumeration getParameterNames()
  • 13. jspSmartUpload组件APISmartUpload类方法名作用原型1、上传与下载共用的方法initialize执行上传下载的初始化工作,必须第一个执行。public final void initialize(javax.servlet.jsp.PageContext pageContext) 其中pagecontext为JSP页面内置对象1、上传与下载共用的方法upload上传文件数据。对于上传操作,第一步执行initialize方法,第二步就要执行这个方法。 public void upload()
  • 14. jspSmartUpload组件APISmartUpload类 方法名作用原型save将全部上传文件保存到指定目录下,并返回保存的文件个数。public int save(String destPathName) 和public int save(String destPathName,int option)其中,destPathName为文件保存目录,option为保存选项,它有三个值,分别是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。(同File类的saveAs方法的选项之值类似)SAVE_PHYSICAL指示组件将文件保存到以操作系统根目录为文件根目录的目录下,SAVE_VIRTUAL指示组件将文件保存到以Web应用程序根目录为文件根目录的目录下,而SAVE_AUTO则表示由组件自动选择。getSize 取上传文件数据的总长度public int getSize()
  • 15. jspSmartUpload组件APISmartUpload类 方法名作用原型getFiles 取全部上传文件,以Files对象形式返回,可以利用Files类的操作方法来获得上传文件的数目等信息public Files getFiles()getRequest取得Request对象,以便由此对象获得上传表单参数之值。public Request getRequest() setAllowedFilesList 设定允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组件将抛出异常public void setAllowedFilesList(String allowedFilesList) allowedFilesList为允许上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文件,可以用两个逗号表示。例如:setAllowedFilesList("doc,txt,,")将允许上传带doc和txt扩展名的文件以及没有扩展名的文件。
  • 16. jspSmartUpload组件APISmartUpload类 方法名作用原型setDeniedFilesList用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限制,则上传时组件将抛出异常。public void setDeniedFilesList(String deniedFilesList)其中,deniedFilesList为禁止上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想禁止上传那些没有扩展名的文件,可以用两个逗号来表示。例如:setDeniedFilesList("exe,bat,,")将禁止上传带exe和bat扩展名的文件以及没有扩展名的文件。setMaxFileSize设定每个文件允许上传的最大长度。。public void setMaxFileSize(long maxFileSize)其中,maxFileSize为为每个文件允许上传的最大长度,当文件超出此长度时,将不被上传。setTotalMaxFileSize设定允许上传的文件的总长度,用于限制一次性上传的数据量大小。public void setTotalMaxFileSize(long totalMaxFileSize)其中,totalMaxFileSize为允许上传的文件的总长度。
  • 17. jspSmartUpload组件APISmartUpload类下载的方法 方法名作用原型setContentDisposition将数据追加到MIME文件头的CONTENT-DISPOSITION域。jspSmartUpload组件会在返回下载的信息时自动填写MIME文件头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,请用此方法。 public void setContentDisposition(String contentDisposition) 其中,contentDisposition为要添加的数据。如果contentDisposition为null,则组件将自动添加"attachment;",以表明将下载的文件作为附件,结果是IE浏览器将会提示另存文件,而不是自动打开这个文件(IE浏览器一般根据下载的文件扩展名决定执行什么操作,扩展名为doc的将用word程序打开,扩展名为pdf的将用acrobat程序打开,等等)。downloadFile 下载文件。 public void downloadFile(String sourceFilePathName)  其中,sourceFilePathName为要下载的文件名(带目录的文件全名)  public void downloadFile(String sourceFilePathName,String contentType)  其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别)。
  • 18. jspSmartUpload组件APISmartUpload类下载的方法 方法名作用原型downloadFile 下载文件。 public void downloadFile(String sourceFilePathName)  其中,sourceFilePathName为要下载的文件名(带目录的文件全名)  public void downloadFile(String sourceFilePathName,String contentType)  其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别) public void downloadFile(String sourceFilePathName,String contentType,String destFileName)  其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别),destFileName为下载后默认的另存文件名。
  • 19. 表单form:enctype属性表单中enctype=“multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用multipart/form-data,才能完整的传递文件数据,设置 enctype=\“multipart/form-data\”是上传二进制数据; form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功。 MIME的英文全称是“Multipurpose Internet Mail Extensions” 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,浏览器,而通知手段就是说明在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,媒体文件等等。
  • 20. 内容示例: jspSmartUpload 多文件上传示例 jspSmartUpload 文件下载示例