栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb 文件上传下载和图片验证码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb 文件上传下载和图片验证码

  • isMultipartContent(Request对象) 判断表单中是否有上传内容,静态

  • FileItemIterator getItemIterator(Request对象) 获得表单项目的迭代器

  • setFileSizeMax(int 长度) 设置每个文件最大的大小

  • setSizeMax(int 长度) 设置上传的总大小

FileItemIterator类 表单项目的迭代器

  • hasNext 判断还有没有项目没有读取

  • FileItemStream next 读取下一个项目

FileItemStream类 上传项目

  • getFieldName 获得表单字段的名称

  • getName 获得文件名

  • openStream 打开输入流

  • isFormField 判断是否是一般的表单项

Streams类 文件流工具类

  • asString(输入流,“编码类型”) 从流中读取字符串

  • copy(输入流 , 输出流 , 结束是否关闭流) 复制输入流的数据到输出流

public class UploadServlet extends HttpServlet{

public static final String UPLOAD_DIR = “/Users/xray/documents/xray_mac/upload”;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

MyLogger log = new MyLogger(UploadServlet.class);

log.info(“start upload…”);

//判断请求中是否存在上传内容

if(ServletFileUpload.isMultipartContent(req)){

//创建上传对象

ServletFileUpload upload = new ServletFileUpload();

//设置上传每个文件的最大长度

upload.setFileSizeMax(1024 * 1024);

//设置上传文件的总大小

upload.setSizeMax(1024 * 1024 * 2);

try {

//获得文件项目的迭代器

FileItemIterator iterator = upload.getItemIterator(req);

//对迭代器进行迭代

while(iterator.hasNext()){

//获得每个表单项

FileItemStream item = iterator.next();

//获得表单项的输入流

InputStream is = item.openStream();

//判断该项是普通表单项目还是上传项目

if(item.isFormField()){

//如果是一般项目,读取文字内容

String value = Streams.asString(is,“UTF-8”);

//判断项目的字段名

switch(item.getFieldName()){

case “username”:

log.info(“用户名:”+value);

break;

case “password”:

log.info(“密码:”+value);

break;

}

}else{

//如果是上传项目,就把文件保存到服务器的目录中 C:/xxx/aa/123.jpg

String filename = UPLOAD_DIR + “/” +

System.currentTimeMillis()+"-"+

FilenameUtils.getName(item.getName());

OutputStream out = new FileOutputStream(filename);

Streams.copy(is, out, true);

log.info(filename+“图片保存完毕”);

}

}

} catch (FileUploadException e) {

e.printStackTrace();

}

}

log.info(“end upload…”);

}

}

[](

)文件下载

==================================================================

下载Servlet

【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

public class DownloadServlet extends HttpServlet{

public static final String DOWNLOAD_DIR = “/Users/xray/documents/xray_mac/download”;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

MyLogger log = new MyLogger(DownloadServlet.class);

//获得文件名

String filename = req.getParameter(“filename”);

log.info(“文件名:”+filename);

//处理中文乱码

filename = new String(filename.getBytes(“ISO-8859-1”),“UTF-8”);

//获得服务器上磁盘文件的输入流

InputStream in = new FileInputStream(DOWNLOAD_DIR+"/"+filename);

//获得发送浏览器的输出流

OutputStream out = resp.getOutputStream();

//设置响应头

resp.setHeader(“content-disposition”, “attachment;filename=”+

URLEncoder.encode(filename, “UTF-8”));

//读写文件流

Streams.copy(in, out, true);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req,resp);

}

}

下载页面

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

Insert title here

Oracle超详细教程.pdf

Oracle经典教程.pdf

[](

)图片验证码

===================================================================

作用:提高安全性,提升黑客破解难度。

实现思路:

1、在Servlet中创建图片

2、随机生成4个字母或数字

3、随机绘制线条

4、将图片发送给浏览器

需要类:

BufferedImage 带缓冲的图片

Graphics 绘图对象

ImageIO 实现图片的IO流读写

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号