/** * * @author Administrator * 文件上传 * 具体步骤: * 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包 * 2) 利用 request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同 * 3)对 DiskFileItemFactory 对象设置一些 属性 * 4)高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory); * 目的是调用 parseRequest(request)方法 获得 FileItem 集合list , * * 5)在 FileItem 对象中 获取信息, 遍历, 判断 表单提交过来的信息 是否是 普通文本信息 另做处理 * 6) * 第一种. 用第三方 提供的 item.write( new File(path,filename) ); 直接写到磁盘上 * 第二种. 手动处理 * */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(LoginServlet.this.getClass().getSimpleName() + "===doPost"); request.setCharacterEncoding("utf-8"); //设置编码 //获得磁盘文件条目工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //获取文件需要上传到的路径 String path = request.getServletContext().getRealPath("/upload"); //如果没以下两行设置的话,上传大的 文件 会占用 很多内存, //设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同 /** * 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, * 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 */ factory.setRepository(new File(path)); //设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室 factory.setSizeThreshold(1024*1024) ; //高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory); try { //可以上传多个文件 List<FileItem> list = (List<FileItem>)upload.parseRequest(request); for(FileItem item : list) { //获取表单的属性名字 String name = item.getFieldName(); //如果获取的 表单信息是普通的 文本 信息 if(item.isFormField()) { //获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的 String value = item.getString() ; // request.setAttribute(name, value); System.out.println("name----" + name + "----value:" + value); } //对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些 else { /** * 以下三步,主要获取 上传文件的名字 */ //获取路径名 String value = item.getName() ; //索引到最后一个反斜杠 int start = value.lastIndexOf("\\"); //截取 上传文件的 字符串名字,加1是 去掉反斜杠, String filename = value.substring(start+1); // request.setAttribute(name, filename); System.out.println("filename----" + filename + "----value:" + value); //真正写到磁盘上 //它抛出的异常 用exception 捕捉 item.write(new File(path,filename) );//第三方提供的 //// 手动写的 // OutputStream out = new FileOutputStream(new File(path,filename)); // // InputStream in = item.getInputStream() ; // // int length = 0 ; // byte [] buf = new byte[1024] ; // // System.out.println("获取上传文件的总共的容量:"+item.getSize()); // //// in.read(buf) 每次读到的数据存放在 buf 数组中 // while( (length = in.read(buf) ) != -1) // { // //在 buf 数组中 取出数据 写到 (输出流)磁盘上 // out.write(buf, 0, length); // // } // // in.close(); // out.close(); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } response.getWriter().write(new String("上传成功!")); } PS:需要的两个工具类在附件里面
相关推荐
Servlet 是 Java 语言中的一种服务器端组件,用于处理客户端的请求。Servlet 可以与 HTTP 协议结合,处理 HTTP 请求和响应。在文件上传中,Servlet 可以处理客户端上传的文件,并将其保存到服务器端。 文件上传实现...
2. 服务器端处理上传文件:在服务器端,使用 servlet 处理上传的文件,并将其存储到指定的位置。 3. 文件下载:在服务器端,提供文件下载的接口,客户端可以通过该接口下载文件。 jsp 页面的实现 在 jsp 页面中,...
android通过servlet上传文件到服务器是非常重要的一种技术,旨在帮助开发者快速实现android客户端上传文件到服务器端。本文将详细介绍android通过servlet上传文件到服务器的过程,包括服务器端的编程实现和客户端的...
总的来说,利用COS Servlet上传文件涉及到客户端的表单提交和服务器端的Servlet处理,需要对HTTP协议、文件上传、MultipartRequest以及可能的业务逻辑有深入理解。同时,确保在实现过程中充分考虑安全性,以提供健壮...
这里的"andriod、iOS服务器端代码之文件上传"是指为这两种移动操作系统开发应用时,实现文件从客户端(手机)上传到服务器端的技术实现。服务器端代码通常由后端语言编写,如Java、Python、Node.js等,用于处理文件...
本教程将详细介绍如何在Android客户端实现文件选择并上传至服务器,同时提供服务器端的处理代码。以下是实现这一功能的关键知识点: 1. **Android文件选择**: - 使用`Intent.ACTION_PICK`启动系统文件选择器,...
在IT行业中,文件上传功能是Web应用程序中常见且重要的需求之一。本教程将详细讲解如何在JSP(Java Server Pages)环境中,...请记住,始终要在服务器端进行严格的文件类型和大小验证,以确保系统的安全性和稳定性。
"Servlet上传文件并显示进度条"这个主题涵盖了如何在用户上传大文件时提供实时进度反馈,以增强用户体验。在这个过程中,我们需要处理以下几个核心知识点: 1. **Multipart解析器**:Servlet 3.0及以上版本引入了...
- "CKEditor上传文件Servlet版本1.0"这个压缩包可能包含了CKEditor的示例配置、Servlet的Java源代码、HTML页面和可能的web.xml配置文件。解压并根据这些文件进行部署和测试。 通过以上步骤,你可以成功地在...
在Java Web开发中,Servlet是一种常用的服务器端编程接口,用于扩展服务器的功能,处理HTTP请求。在本案例"JAVA_servlet的文件上传"中,我们将深入探讨如何使用Servlet实现文件上传功能,这对于构建交互性强的Web...
在Java Web开发中,`JSP (JavaServer Pages)` 和 `Servlet` 是两种常见的技术,它们经常被结合使用来处理动态网页和服务器端业务逻辑。本篇将详细讲解如何使用`JSP`和`Servlet`合作实现文件上传功能,特别是针对图片...
在这个"Servlet上传代码和架包"中,我们可以看到一个关于如何在Servlet中实现文件上传的实例,这对于初学者来说是一个非常实用的学习资源。 文件上传是Web应用程序中的常见功能,允许用户将本地文件传输到服务器。...
在Java Web开发中,文件上传是一项常见的功能,...以上就是Java Web接收上传文件服务器端示例的主要技术点。在UploadTest项目中,你将看到如何实现这些步骤的代码,从而完成Android客户端与服务器之间的文件上传交互。
JSP是一种服务器端脚本语言,允许开发者将HTML、CSS、JavaScript与Java代码混合编写,从而在服务器端生成动态网页内容。而`Servlet`是Java编程语言中的一个接口,用于扩展服务器的功能,处理HTTP请求和响应。在文件...
首先,`jQuery ajaxFileUpload` 插件允许用户在不刷新页面的情况下上传文件,提供了一种友好的用户体验。它的主要优点包括进度条显示、错误处理以及对多文件上传的支持。要使用这个插件,你需要在HTML页面中引入...
总结来说,实现"JSP+servlet上传文件有进度条"需要结合JSP、Servlet、文件上传库(如Commons-FileUpload)以及前端的AJAX和JavaScript技术。通过异步请求和实时的进度反馈,为用户提供流畅的文件上传体验。在实际...
同时,需要设置`enctype="multipart/form-data"`,因为这是上传文件所必需的MIME类型。 接下来,我们需要在Servlet中解析请求的多部分数据。Java标准库提供了一个名为`javax.servlet.http.Part`的接口,它代表了...
4. **Servlet接收**:服务器端的Servlet接收到请求,通过`HttpServletRequest`的`getParts()`方法获取上传的文件Part。 5. **文件保存**:Servlet读取Part的内容,将其写入服务器指定的文件路径,完成文件保存。 6. ...
在客户端向服务器端上传文件的过程中,涉及到的主要技术包括前端交互、后端处理和文件传输协议。下面将分别从这三个方面详细讲解相关知识点。 首先,前端交互是用户与应用程序的接触点,这里通常会使用HTML、CSS和...
**Android客户端上传文件** 1. **创建HTTP请求**:Android客户端首先需要构建一个HTTP请求,通常是POST请求,携带文件数据。可以使用`HttpURLConnection`或者第三方库如`Volley`、`OkHttp`等。 2. **文件读取**:...