`

java学习之图片上传,下载显示demo

阅读更多
每次都是用的框架来弄图片上传的,这次自己温习了下,没用框架来弄弄,一个简单的demo,代码如下:
//这是上传的到服务器的servlet
/**
 * 
 */
package com.servlet;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.apache.tomcat.util.http.fileupload.servlet.ServletRequestContext;

/**
 * @author Administrator
 *
 */
public class PreLoadPicServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req,resp);
	}
	/**
	 * 参考这个api:http://commons.apache.org/proper/commons-fileupload/apidocs/index.html
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("text/html;charset=utf-8");
		//未解析类提供配置信息
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//创建解析类的实例
		ServletFileUpload sfu = new ServletFileUpload(factory);
		//设置文件的最大值,4M
		sfu.setSizeMax(1024*1024*4);
		/**
		 * 我没有下载apache的commons-fileupload的jar包,直接用的eclipse创建的
		 * 所以本来parseParameterMap(request req);现在变成了
		 * parseParameterMap(requestContext rc);所以只能创建实现改接口的类的对象
		 */
		ServletRequestContext src = new ServletRequestContext(req); 
		try {
			//每个表单域中的数据会封装到一个对应的FileItem对象上
			List<FileItem> items = sfu.parseRequest(src);
			//定义文件名
			String fileName = "";
			for(FileItem item:items){
				//判断是否是普通类型的表单,如果不是那么就是file类型
				if(!item.isFormField()){
					//得到文件名
					fileName = item.getName();
					//分割出名字和后缀,这里用了一个实体类来代表文件
					String[] tempS = fileName.split(".");
					//写入文件,这里因为是初学文件上传,所以就简单的随便找了个目录
					File file = new File("E:"+File.separator+fileName);
					item.write(file);
				}
			}
			//上传成功,跳转到展示的界面
			req.setAttribute("picSrc", fileName);
			req.getRequestDispatcher("/showPic.jsp").forward(req, resp);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
	}
}


//这是下载显示到页面的代码
package com.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownPicServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@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 {
		req.setCharacterEncoding("utf-8");
		String fileName = req.getParameter("srcPath");
		
		File file = new File("E:"+File.separator+fileName);
		FileInputStream fis = new FileInputStream(file);
		
		resp.setContentType("text/html;charset=utf-8");
		OutputStream out =  resp.getOutputStream();
		byte[] tempB = new byte[1024];
		int tempFlag;
		while((tempFlag=fis.read(tempB))!=-1){
			out.write(tempB,0,tempFlag);
		}
		fis.close();
		out.close();
	}
}



简单的jsp,代码如下:
上传的jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<form action="preLoadPic.do" method="post" enctype="multipart/form-data">
		<input type="file" name="pic">
		<input type="submit" value="提交">
	</form>
</body>
</html>


//展示的jsp页面
<%@ page language="java"  contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
	<head></head>
	<body>
		${picSrc}
		<img alt="" src="downPic.do?srcPath=${picSrc}">
	</body>
</html>


web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
	<servlet-name>preLoadPic</servlet-name>
	<servlet-class>com.servlet.PreLoadPicServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>preLoadPic</servlet-name>
	<url-pattern>/preLoadPic.do</url-pattern>
</servlet-mapping>
</web-app>

启动tomcat: http://localhost:8080/LoadPicDemo/prePic.jsp

结果就没展示了,直接上传了代码
分享到:
评论

相关推荐

    java代码实现多张图片单张图片文件上传_DEMO_图片上传_

    在Java编程环境中,图片上传功能是一项常见的需求,尤其在开发Web应用或移动应用时。本DEMO主要展示了如何实现单张或多张图片文件的上传功能。以下将详细讲解涉及的知识点。 1. **文件I/O操作**:在Java中,进行...

    上传图片不乱码demo

    在IT行业中,图片上传是网页应用中常见的功能之一,它涉及到前端与后端的交互、文件处理、编码问题等多个知识点。在这个"上传图片不乱码demo"中,开发者已经解决了图片上传过程中的乱码问题,提供了简单易用的实现...

    文件上传下载demo

    总的来说,"文件上传下载demo"涵盖了前端与后端的交互、文件处理、进度反馈等多个技术点,是Web开发中一个实用且常见的学习和实践案例。通过理解并实现这样的demo,开发者可以提升自己的技能,更好地应对实际项目中...

    ueditor jsp 图片上传demo

    【标题】"ueditor jsp 图片上传demo"是一个基于Ueditor编辑器的Java Web应用程序示例,展示了如何在jsp页面上实现图片上传功能。Ueditor是一款强大的富文本编辑器,广泛应用于网页内容编辑,支持多种语言,包括...

    网页调相机拍照并将图片显示到网页Demo

    网页调相机拍照并将图片显示到网页的技术涉及到多个层面,包括前端网页...通过学习和实践这个Demo,开发者可以掌握Hybrid App开发中JavaScript与Android之间的交互,以及如何在网页上实现实时的图片捕获和显示功能。

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    1个目标文件 摘要:Java源码,网络相关,HTTP   Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    1个目标文件 摘要:Java源码,网络相关,HTTP   Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有...

    图片批量上传demo

    在IT行业中,图片批量上传是一项常见的功能...此示例不仅适用于学习,也可以直接作为项目中图片上传功能的基础。在实践中,你可以根据具体需求进行扩展,比如添加图片缩略图生成、图片处理(如裁剪、调整大小)等功能。

    bmob上传图片的小demo

    【标题】"bmob上传图片的小demo"是一个关于使用Bmob后端云服务进行图片上传的实战示例。Bmob是一家提供云端数据存储和管理服务的公司,特别适合移动应用开发者,它允许开发者轻松地在应用程序中实现数据的存储、查询...

    仿微信上传照片的demo

    5. **上传逻辑**:实际的图片上传通常涉及到HTTP请求,可以使用`HttpURLConnection`、`OkHttp`或`Retrofit`等网络库。将压缩后的图片转换成字节数组,然后作为请求体发送到服务器。 6. **进度反馈**:在上传过程中...

    基于java图片展示demo 含后端

    这个Java图片展示demo可能包括了从图片上传、存储、查询到展示的完整流程,是一个很好的学习资源,有助于理解Java Web开发中的核心概念和技术。通过深入研究这个项目,开发者可以学习到如何在实际环境中运用上述技术...

    android 本地上传和拍照上传demo

    总结来说,这个“android 本地上传和拍照上传demo”涵盖了Android应用中常见的图片选取和拍摄功能,涉及的关键技术包括Intent的使用、权限管理、文件操作以及图片上传。通过这个示例,开发者可以学习到如何在自己的...

    批量上传的Demo

    【批量上传的Demo】是一个关于如何在编程中实现文件批量上传功能的示例。这个Demo主要涉及的技术领域是Web开发,特别是与用户交互部分,如前端表单提交和后端处理。在这里,我们将深入探讨批量上传的相关技术点,并...

    demo.zip_DEMO_javaweb 图片

    在IT行业中,Java Web开发是一项基础且广泛使用的技能,尤其对于初学者来说,理解并实践一个简单的图片上传和显示的应用程序是非常有帮助的。"demo.zip_DEMO_javaweb 图片"是一个这样的实例,它提供了如何在Java Web...

    fckeditor-java-demo

    1. **下载并引入依赖**:获取fckeditor-java-demo-2.5压缩包,将所需jar文件添加到项目类路径中。 2. **配置编辑器**:在HTML或JSP页面中引入FCKeditor的JavaScript文件,并设置编辑器的ID、宽度、高度等属性。 3. *...

    OssDemo.zip

    这个名为"OssDemo.zip"的压缩包文件包含了基于Android平台实现的OSS服务的简单图片上传和下载功能的示例代码。下面将详细解释相关知识点。 1. **阿里云对象存储(OSS)**: - OSS是一种云存储服务,可以安全地存储...

    包含上传图片的简单增删改查Demo

    本项目“包含上传图片的简单增删改查Demo”提供了一个完整的示例,展示了如何在一个应用程序中实现基本的数据操作(增删改查)以及图片上传功能。下面将详细解析其中涉及的关键知识点。 首先,增删改查(CRUD,...

    上传图片到七牛云服务器demo

    在Android开发中,将图片上传至云端服务器是常见的需求,特别是在构建移动应用时。...通过学习和理解这个示例,开发者可以快速地在自己的项目中实现图片上传功能,并享受到七牛云提供的高效、稳定的云存储服务。

    图片,文档上传与下载

    在IT领域,图片和文档的上传与下载是网络应用中非常基础且重要的功能。这个程序Demo专注于实现这一功能,旨在帮助开发者理解并掌握这一技术。本文将深入探讨相关的知识点。 一、图片和文档的上传 1. **表单提交**...

Global site tag (gtag.js) - Google Analytics