为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的文件上传下载

难度初级
时长 3小时30分
学习人数
综合评分9.70
96人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.5 逻辑清晰
  • 使用Struts2国际化处理错误信息: 1.首先在Struts.xml中使用<constant name="struts.custom.i18n.resources" value="error"/> 2.创建一个error_zh_CN.propertites国际化文件,key为发生错误的信息,value为反馈给客户的信息,要在designed栏中添加key-value,保存后Struts2会自动将value变为国际化. 3.在jsp页面中可以通过<s:fielderror>标签获取当action出现错误时反馈的信息.
    查看全部
  • Struts2国际化 国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法. 首先要在struts2中配置一个标签 <constant name="struts.custom.i18n.resources" value="csdn"></constant> value就是他开始的前缀名字,其次写两个文件,一个为csdn_en_US.properties,另一个为:csdn_zh_CN.properties,从这两个文件中,我们可以看到,他们是csdn这个开头的,en为语言,US是国家名字. 总结来说是:开始前缀_语言_国家.properties这样组成的. 使用Struts2上传文件常见的异常:
    查看全部
  • action中: public class UpLoadAction extends ActionSupport { private File upload; private String uploadFileName; private String uploadContentType; //反馈成功上传结果给客户端 private String result; 生成set()方法 @Override public String execute() throws Exception { //获得服务器端保存上传文件的路径 String path=ServletActionContext.getServletContext().getRealPath("/")+"images"; File savefile=new File(path); if(!savefile.exists()) { savefile.mkdirs(); } //使用FileUtils类的copyFile(File 1,File 2)静态方法实现文件的覆盖,FileUtils类是commons.io.包下的类. //该方法有两个File类型的参数,即将参数中的f1文件覆盖到参数中f2的文件中. FileUtils.copyFile(upload, new File(savefile,uploadFileName)); //此处该方法第一个参数为客户端上传的文件,第二个参数是服务器端保存上传文件目录中以上传文件为名的文件(本身是不存在的,但copyFile()方法会自动创建,因为内部是会用到输出流,不存在则会自动创建,可以使用自动义的文件名,该文件中的内容最后会被覆盖). //在jsp页面中通过<%@ taglib uri="/struts-tags" prefix="s"%>引入标签库. //在合适位置中使用<s:property value="result">即可获取到该属性值. result="上传成功"; return SUCCESS; } }
    查看全部
  • struts2实现文件的上传(代码). 前台jsp实现: //提交到action中 <form action="uploadaction.action" method="post" enctype="multipart/form-data"> <input type="file" name="upload" /> <input type="submit" value="提交"/> </form> struts.xml: <struts> <package name="default" namespace="/" extends="struts-default"> //配置action <action name="uploadaction" class="com.own.action.UpLoadAction"> <result name="success">/jsp/view.jsp</result> <result name="input">/jsp/error.jsp</result> //引用拦截器,配置参数. <interceptor-ref name="fileUpload"> <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg</param> <param name="maximumSize">2M</param> </interceptor-ref> //引用默认拦截器 <interceptor-ref name="defaultStack"/> </action> </package> </struts> fileUpload拦截器中不定义allowedTypes参数则任何类型文件都可以上传.
    查看全部
  • struts2实现文件的上传(原理). 后台获取上传文件内容的方法: 首先在Action中要定义三个成员变量,类型没有规定,一般为File或者List<File>,String或者List<String>. (变量名的后缀是有规定的,Struts2为其进行了封装,xxx代表表单文件域提交上来的name属性值). 1.类型为File的成员变量xxx,上传上来的文件. 2.类型为String的成员变量xxxFileName,上传文件的文件名. 3.类型为String的成员变量xxxContentType,上传上来的文件类型. 生成对应的set()方法. 可以在struts.xml中的Action标签中引用拦截器(fileUpload)来设置允许上传文件类型与文件大小. 该拦截器也是struts2定义好的拦截器,该拦截器有两个可选参数.分别为allowedTypes、maximumSize.前者用来限制上传文件的类型,如:image/jpg,image/gig,text/txt.在引用该拦截器下使用<param>标签设置. SmartUpLoad中提供setAllowedFilesList()方法,直接在方法参数中标明允许上传的文件后缀名即可.
    查看全部
  • struts2实现文件的上传(原理).
    查看全部
  • 文件下载原理
    查看全部
  • ENCTYPE属性
    查看全部
  • 可以在系统初始化中给拦截器指定默认的参数(也包括了定义拦截器方式)如下: 在拦截器类中把hello当做属性set/get方式注入到拦截器类中: <interceptors> <!-- 先定义拦截器 --> <interceptor name="myInterceptor" class="com.own.Hello"> <!-- 指定系统初始化给拦截器的参数 --> <param name="username">zht</param> </interceptor> <!-- 加到自己设置的拦截器栈里边去 --> <interceptor-stack name="myStack"> <interceptor-ref name="myInterceptor"/> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors>
    查看全部
  • //通过循环,把文件写入到ZipOutputStream当中. for(String fileName:fileNames){ str+=fileName+rt; File file=new File(path+fileName); //通过ZipOutputStream的putNextEntry(ZipEntry e)方法设置需要压缩的文件条目.参数是ZipEntry对象,此类用于表示ZIP文件条目,条目:指按内容分列的细目. //文件条目即把文件加入到Zip压缩包里. ZipEntry类的构造方法参数是String类型. zipo.putNextEntry(new ZipEntry(fileName)); //创建输入流,从服务器端读取客户端需要下载的文件的内容,同时将内容通过ZipOutputStream输出流写入. FileInputStream inputStream=new FileInputStream(file); byte [] b=new byte[1024]; int n=0; while((n=inputStream.read(b))!=-1){ zipo.write(b, 0, n); } //刷新此输出流,关闭输入流 //zipo.flush(); inputStream.close(); } //ZipOutputStream的setComment(String comment)方法可以设置ZIP文件注释,下载打开压缩包时可以从右边看到该内容. zipo.setComment("download:success"+rt+str); //刷新输出流,不刷新结果也没什么影响. //zipo.flush(); //关闭输出流 zipo.close(); }
    查看全部
  • Servlet中: doPost(){ //首先设置contentType类型为下载类型 response.setContentType("application/x-msdownload"); //设置header信息,那么下载下来的zip压缩包名就为text.zip response.setHeader("Content-Disposition","attachment;filename=test.zip"); //获取服务器中保存需要下载文件的目录. String path=this.getServletContext().getRealPath("/")+"file/"; //获取表单提交需要下载的文件名数组(复选框). String [] fileNames=request.getParameterValues("filenames"); //创建ZipOutputStream对象,此类为以ZIP文件格式写入文件实现输出流过滤器.构造方法参数是OutPutStream对象,因此可以使用response.getOutPutStream作为参数. ZipOutputStream zipo=new ZipOutputStream(response.getOutputStream()); //该字符串用来设置Zip文件注释 String str=""; //定义换行符 String rt="\r\n";
    查看全部
  • 在实际项目当中,想要实现文件批量下载,基本上都是通过打包的方式. 即假如下载10个文件,此时把这10个文件打包在一个zip的压缩包里. smartupload实现批量下载: jsp前台页面: <h2>批量下载:</h2> <!-- 表单不需要设置enctype属性,因为不是上传文件 --> <form action="batchDownLoad" method="post" > <input type="checkbox" name="filenames" value="a.txt"/>a.txt <input type="checkbox" name="filenames" value="b.txt"/>b.txt <input type="checkbox" name="filenames" value="c.txt"/>c.txt <input type="submit" value="确认"/> </form>
    查看全部
  • request.getInputStream()与response.getOutputStream()方法是为了在无法指定file对象时,可以通过此方法创建到输入/输出流.
    查看全部
  • getParameter()方法就是根据表单中的name值,获取该name值对应表单项的value属性值. getParameterValues();方法就是根据表单中的name值,获取该name值对应一组表单项的value属性值(用在复选框).
    查看全部
  • 上传回顾
    查看全部

举报

0/150
提交
取消
课程须知
本课程是 Java web 中级课程,建议各位小伙伴们先对 Jsp、Servlet、Jquery以及Struts2有初步认识,再来进修
老师告诉你能学到什么?
1、Java web 文件上传下载原理 2、纯 jsp+servlet 实现文件上传下载思路分析及实现 3、SmartUpload 轻松实现文件上传 4、Struts2 实现文件上传下载

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!