J2EE:servlet 上传文件到服务器,并响应显示
来源:互联网 发布:淘宝没有耐克旗舰店吗 编辑:程序博客网 时间:2024/05/19 03:30
Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。
编写上传页面upload.html
注意事项:
表单 method 属性应该设置为 POST 方法,不能使用 GET 方法。(GET属方法不能上传文件)
表单 enctype 属性应该设置为 multipart/form-data.(表示提交的数据是二进制文件)
<form action="/uploadPhoto" method="post" enctype="multipart/form-data">
upload.html
<!DOCTYPE html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><form action="/uploadPhoto" method="post" enctype="multipart/form-data"> 英雄名称:<input type="text" name="heroName" /> <br> 上传头像 : <input type="file" name="filepath" /> <br> <input type="submit" value="上传"></for
servlet类—上传功能开发
将commons-io-1.4.jar和commons-fileupload-1.2.2.jar 两个jar包放到WEB-INF/lib 目录下。
读取输入流中的数据,保存在服务端的目录下 e:/project/j2ee/web/uploaded,因为后续网页上显示的时候是通过http://127.0.0.1/uploaded/xxx.jpg 路径来查找图片。
根据临时生成的文件名,创建一个html img元素,然后通过response返回浏览器
UploadPhotoServlet
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** * servlet文件上传到服务器以及响应显示 * @author lzp * */public class UploadPhotoServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) { String filename = null; try { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制为1M factory.setSizeThreshold(1024 * 1024); List items = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); // 判断是常规字段还是提交的文件(常规字段为true) if (!item.isFormField()) { // 提交文件 // 根据时间戳创建头像文件 filename = System.currentTimeMillis() + ".jpg"; String photoFolder = "e:\\project\\j2ee\\web\\uploaded"; File f = new File(photoFolder, filename); f.getParentFile().mkdir(); // 上级目录的创建 mkdirs使用值得商榷 // 通过item.getInputStream()获取浏览器上传的文件的输入流 InputStream is = item.getInputStream(); // 复制文件---字节流复制 FileOutputStream fos = new FileOutputStream(f); byte b[] = new byte[1024 * 1024]; int length = 0; while (-1 != (length = is.read(b))) { fos.write(b, 0, length); } fos.close(); } else { // 常规字段 System.out.println(item.getFieldName()); // 字段 String value = item.getString(); // 字段值 value = new String(value.getBytes("ISO-8859-1"), "UTF-8"); System.out.println(value); } } String html = "<img width='200' height='150' src='uploaded/%s' />"; PrintWriter pw= response.getWriter(); pw.format(html, filename); response.setContentType("text/html"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }}
web.xml—路径映射
将web.xml提供的路径映射到对应的servlet上。
<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet> <servlet-name>UploadPhotoServlet</servlet-name> <servlet-class>UploadPhotoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadPhotoServlet</servlet-name> <url-pattern>/uploadPhoto</url-pattern> </servlet-mapping></web-app>
运行结果
0 0
- J2EE:servlet 上传文件到服务器,并响应显示
- PHP上传文件到服务器 并显示
- Servlet上传文件并显示上传进度
- java servlet 上传文件到服务器
- android 上传文件到服务器段(servlet)
- android通过servlet上传文件到服务器
- iOS上传图片文件到J2EE Servlet保存
- android手机客户端上传文件,java servlet服务器端接收并保存到服务器
- android手机客户端上传文件,java servlet服务器端接收并保存到服务器
- android手机客户端上传文件,java servlet服务器端接收并保存到服务器
- J2EE中用户上传文件到服务器功能实现
- JSP + Servlet 实现的文件上传到服务器的功能
- struts2 图片上传到服务器并显示在页面
- 文件上传到服务器并获取文件中的数据
- servlet上传图片到服务器
- javaWeb的servlet读取服务器文件并下载到浏览器
- 上传文件并保存到另外一台服务器
- struts2上传word文件并保存到服务器上
- Redis源码剖析和注释(三)--- Redis 字典结构
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- POJ1163 数字三角形
- git add.运行时第一个警告
- 031删除所有的子元素
- J2EE:servlet 上传文件到服务器,并响应显示
- java虚拟机启动参数分类详解
- spring源码学习之路---深入AOP(终)
- 用带缓冲的字节流合并音乐
- 使用树莓派专用摄像头实现rtsp流的方法总结
- 在 Docker 里跑 Java ,趟坑总结
- java代码的初始化过程研究
- Android 中Jni与Java运算性能比较
- LeetCode OJ 239. Sliding Window Maximum