javaweb文件的上传和下载,java文件上传的几种方式

  javaweb文件的上传和下载,java文件上传的几种方式

  本文实例为大家分享了javaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下

  1.先导入两个包:commons-fileupload-1.3.3.jar,commons-io-2.6.jar。

  2.前端页面代码

  表单操作=上传文件。 do method= post enctype= multipart/form-data input type= text name= username /br input type= file name= user img /br input type= submit value=提交//form2 .小型应用程序代码

  包com。上传测试。上传;导入Java。io。文件;导入Java。io。io异常;导入Java。util。列表;导入Java。util。uuid导入javax。servlet。servlet上下文;导入javax。servlet。servlet异常;导入javax。servlet。注释。web servlet导入javax。servlet。http。http servlet导入javax。servlet。http。http servlet请求;导入javax。servlet。http。http servlet响应;导入org。阿帕奇。公地。文件上传。文件项目;导入org。阿帕奇。公地。文件上传。文件上传库;导入组织。阿帕奇。公地。文件上传。文件上传异常;导入组织。阿帕奇。公地。文件上传。磁盘。磁盘fileitemfactory导入org。阿帕奇。公地。文件上传。servlet。servlet文件上传;/*** Servlet实现类upLoadfile */@ web Servlet(/upLoadfile。do’)公共类上传文件扩展http Servlet { private static final long serialVersionUID=1L;/* * * * @参见http servlet # http servlet()*/public upLoadfile(){ super();//TODO自动生成的构造函数stub }/* * * * @参见http servlet # doGet(http servlet请求,http servlet响应*响应)*/protected void doGet(http servlet请求,http servlet响应响应)抛出ServletException,IOException { //TODO自动生成的方法存根response.getWriter().追加(送达: )。追加(请求。getcontextpath());}/* * * * @参见http servlet # doPost(http servlet请求,HttpServletResponse *响应)*/protected void doPost(http servlet请求,http servlet响应)抛出ServletException,io异常{ String save filename=//字符串旧文件名=" ";//直接由item.getNam()获取的文件名,有可能获取的是路径,也为了避免重名覆盖,所以要对它进行处理字符串新文件名=" ";//对源文件名进行处理后的名字//借助工具解析c

  ommons-fileupload smartupload(在项目中导入了jar包)        // 判断传递的是否是文件类型,判断form的enctype的属性值是否是multipart/form-data        boolean isMultipart = ServletFileUpload.isMultipartContent(request);        if (isMultipart) {            // 创建FileItem对象的工厂            DiskFileItemFactory factory = new DiskFileItemFactory();            // 获取Servlet上下文            ServletContext servletContext = null;            servletContext = this.getServletConfig().getServletContext();            // 获取临时文件夹            String str = "javax.servlet.context.tempdir";            File repository = (File) servletContext.getAttribute(str);            factory.setRepository(repository);            // 创建文件上传处理器            ServletFileUpload upload = new ServletFileUpload(factory);            // 解决中文乱码            upload.setHeaderEncoding("utf-8");            // 解析request获取上传的参数            try {                // 使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项                List<FileItem> items = upload.parseRequest(request);                // 解决上传文件名的中文乱码                upload.setHeaderEncoding("UTF-8");                // 处理参数                for (FileItem item : items) {                    // 判断是否为Form的表单域,即判断是否为普通的数据,若不是则为文件。                    if (item.isFormField()) {                        String name = item.getFieldName();                        // 解决普通输入项的数据的中文乱码问题                        String value = item.getString("UTF-8");                        // value = new String(value.getBytes("iso8859-1"),"UTF-8");                        //System.out.println(name + "=" + value);                    } else {                        // 设置上传单个文件的大小的最大值,目前是设置为1024*1024*10字节,也就是10MB                        upload.setFileSizeMax(1024 * 1024 * 10);                        // 写入文件                        // 此处本项目在服务器中的路径,为绝对路径,也可以根据需要存入到其他路径                        String rootPath = servletContext.getRealPath("//");                        // File.separator(相当于添加了一个分隔符),在Windows下的路径分隔符()和在Linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报异常                                                String savePath = rootPath + File.separator + "upload";                        /*  此处我是将文件保存在服务器上的,这样的话如果重写部署一次服务器,之前上传的文件就会删除                          如果想永久保存上传的文件,可以设置一个其他绝对路径,如:E:eclipse-workspaceJAVAWebJSPUploadTestWebContentfileByupload。*/                                                 // String savePath = "E:\eclipse-workspace\JAVAWeb\JSPUploadTest\fileByupload";                         File fileSaveFolder = new File(savePath);                        // 如果不存在该文件夹则创建                        if (!fileSaveFolder.exists()) {                            fileSaveFolder.mkdir();                        }                        oldFileName = item.getName();                        newFileName = processFileName(oldFileName);                        saveFileName = savePath + File.separator + newFileName;                        // 存储文件                        File uploadedFile = new File(saveFileName);                        item.write(uploadedFile);                    }                }                request.setAttribute("message", "文件上传成功!");            } catch (FileUploadBase.FileSizeLimitExceededException e) {                e.printStackTrace();                request.setAttribute("message", "照片大小不能超过10M");                request.getRequestDispatcher("Show.jsp").forward(request, response);                return;            } catch (FileUploadException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            request.setAttribute("saveFileName", saveFileName);            request.setAttribute("newFileName", newFileName);            request.getRequestDispatcher("Show.jsp").forward(request, response);        }    }     // 对文件名进行处理    private String processFileName(String oldFileName) {        // 补充:对于 item.getName()有的浏览器会返回文件名,而有的浏览器会返回“路径”+“文件名”,针对后者我们需要通过“字符串截取”获取文件名        // 例如会出现这样的情况:item.getName():C:UsersDesktop备忘录.txt        String tempFileName = "";        int index = oldFileName.lastIndexOf("\");        if (index != -1) {            // subString(x)是从字符串的第x个字符截取            tempFileName = oldFileName.substring(index + 1);        }        // 为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名        return UUID.randomUUID().toString() + "_" + tempFileName;    }}3.图片展示

  

 

  

<p>${message}</p>  <img id="picture" src="upload/${newFileName}" width="200px" height="200px" alt="不是图片">

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: