JAVA实现文件上传

利用JAVA实现文件上传Demo01servlet下的图片上传功能前端代码: upload.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><h3>文件上传</h3><!--文件上传必须post请求 因
摘要由CSDN通过智能技术生成

利用JAVA实现文件上传

Demo01

servlet下的图片上传功能

前端代码: upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>文件上传</h3>
<!--文件上传必须post请求 因为上传数据太大  get请求不能超过4k
设置编码类型必须设置 -->
<form action="upload" method="post" enctype="multipart/form-data">
    <input type="text" name="title" placeholder="图片标题">
    <input type="file" name="pic">
    <input type="submit" value="上传">
</form>
</body>
</html>

UploadServlet代码

package cn.tedu.controller;

import cn.tedu.dao.PicDao;
import cn.tedu.entity.Pic;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 页面中设置了编码类型为多部份数据
 * 所以servlet必须添加以下注解
 */
@MultipartConfig
@WebServlet(name = "UploadServlet", urlPatterns = "/upload")
public class UploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置字符集
        request.setCharacterEncoding("UTF-8");
        String title = request.getParameter("title");
        System.out.println("title=" + title);
        //获取上传的文件
        Part part = request.getPart("pic");
        //获取上传文件的信息  需要从上面获取文件的后缀名
        String info = part.getHeader("content-disposition");
        System.out.println(info);
        //name="pic"; filename="c.jpg"
        //从上面内容中截取.jpg
        String suffix = info.substring(info.lastIndexOf("."), info.length() - 1);
        System.out.println("后缀:" + suffix);
        //获取唯一文件名 UUID.randomUUID()  获取唯一标识
        String fileName = UUID.randomUUID() + suffix;
        System.out.println(fileName);
        //在HTML中只能显示tomcat管辖内的图片,
        //所以必须将图片保存在tomcat管辖范围内
        //获取tomcat管辖范围的路径
        String path = request.getServletContext().getRealPath("images/");
        System.out.println(path);
        //创建出文件夹
        new File(path).mkdirs();
        //把文件保存在images文件夹下
        part.write(path + fileName);
        System.out.println("文件保存完成!");
        //把title和图片路径封装到Pic对象中
        Pic pic = new Pic(0, title, "images/" + fileName);
        //调用PicDao 调用insert方法
        new PicDao().insert(pic);
        //重定向到图片列表页面
        response.sendRedirect("/piclist");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

ThUtils工具类

package cn.tedu.utils;

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ThUtils {
	private static TemplateEngine te;
	static {
		//创建模板引擎对象
		te = new TemplateEngine();
		//创建解析器  该解析器会自动查找src/main/resources目录下的模板页面
		ClassLoaderTemplateResolver r = 
				new ClassLoaderTemplateResolver();
		//设置字符集
		r.setCharacterEncoding("UTF-8");
		//让解析器和模板引擎关联
		te.setTemplateResolver(r);
	}
	//Context导包 org.thymeleaf.Context
	public static void print(String fileName,Context context,
			HttpServletResponse response) throws IOException {
		//将页面和数据整合到一起的到一个新的html字符串  整合!!!
		String html = te.process(fileName, context);
		//把得到的新的html返回给浏览器   异常抛出
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw = response.getWriter();
		pw.print(html);
		pw.close();
	}
}

Demo02

vrd项目实现图片上传操作

前端代码

<form action="send" method="post"
					enctype="multipart/form-data">
						<div class="form-group">
							<label for="title">标题</label> <input type="text"
								class="form-control" id="title" name="title"
								placeholder="请输入作品标题">
						</div>
						<div class="form-group">
							<label for="aabstract">作者姓名</label> <input type="text"
								class="form-control" id="aabstract" name="author"
								placeholder="请输入作者姓名">
						</div>
						<div class="form-group">
							<label for="intro">作品简介</label>
							<textarea class="form-control" rows="4" id="intro"
								name="intro" >无详细介绍</textarea>
						</div>
						<div class="form-group">
                          <label >选择分类</label>
                          <select name="categoryId">
                            <option th:each="c :${list}" th:value="${c.id}" th:text="${c.name}"></option>
                          </select> 
                        </div>
						<div class="form-group">
							<label >选择文件</label> <input type="file" id="file"
								name="file">
						</div>
                        <div class="text-center">
	       					<button type="submit" class="btn btn-danger btn-lg ">发布作品</button>
                        
                        </div>
					</form>

对应的SendServlet代码

package cn.tedu.controller;

import cn.tedu.dao.ProductDao;
import cn.tedu.entity.Product;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@MultipartConfig
@WebServlet(name = "SendServlet",urlPatterns = "/send")
public class SendServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String title = request.getParameter("title");
        String author = request.getParameter("author");
        String intro = request.getParameter("intro");
        String categoryId = request.getParameter("categoryId");
        //获取上传的文件
        Part part = request.getPart("file");
        //获取上传的文件信息
        String info = part.getHeader("content-disposition");
        System.out.println("info:"+info);
        //截取 .jpg
        String suffix=info.substring(info.lastIndexOf("."),info.length()-1);
        String filename= UUID.randomUUID()+suffix;
        System.out.println("文件名:"+filename);
        //获得tomcat的管辖路径
        String path = request.getServletContext().getRealPath("/images");
        //将日期对象按照上面的格式转换  /yyyy/MM/dd/
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
        String dateDir = sdf.format(new Date());
        System.out.println("日期路径为:"+dateDir);
        System.out.println("完整路径为:"+path+dateDir);
        //创建文件夹
        new File(path+dateDir).mkdirs();
        //把文件保存到文件夹
        part.write(path+dateDir+filename);
        ProductDao productDao = new ProductDao();
        productDao.insert(new Product(0, title, author,
                intro, "images/"+dateDir+filename, 0, 0, System.currentTimeMillis(), Integer.parseInt(categoryId)));
        //重定向到首页
        response.sendRedirect("/home");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

Demo03

上传轮播图图片文件

前端代码

<div class="row">
			<!--左侧主要内容-->
			<div class="col-md-offset-2 col-md-8">
				<!--遍历轮播图集合-->
				<div th:each="b:${list}">
					<img th:src="${b.url}" class="img-responsive" alt="">
					<a th:href="'deletebanner?id='+${b.id}" class="btn btn-danger">删除</a>
				</div>
				<!--添加轮播图-->
				<hr>
				<h2 class="page-head
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值