JavaWeb servlet jsp 使用七牛云API上传图片

JavaWeb servlet jsp 使用七牛云API上传图片

这次是上一次的改进版本,相对上次好很多,上次很多作业混在一起没法随便分开

有兴趣的可以看看我上次写的:JavaWeb servlet jsp 上传图片,图片存入数据库,图片从数据库中取出,页面显示图片

我后续还改进了,加了图片上传的组件:jsp使用七牛云API和webuploader上传多组图片

动画

image-20211106140718937

image-20211106141012448

image-20211106140853210

页面其实用了一点jquery和layui来写

工具类

七牛云工具类

文档:

扫描二维码关注公众号,回复: 13283214 查看本文章

https://developer.qiniu.com/kodo/1239/java

package top.sehnsucht.util;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import lombok.Data;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */

public class Qiniu {
    
    
    private static String ACCESS_KEY = "xxx";//填写你自己的
    private static String SECRET_KEY  = "xxx";
    private static String BUCKET_NAME = "xxx";
    private static String KEY = "";
    private static String FILE_PATH = "";


    /**
     * 自定义返回的json格式
     */
    public static void setJson() {
    
    
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        StringMap putPolicy = new StringMap();
        putPolicy.put("callbackUrl", "http://api.example.com/qiniu/upload/callback");
        putPolicy.put("callbackBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize)}");
        putPolicy.put("callbackBodyType", "application/json");
        long expireSeconds = 3600;
        String upToken = auth.uploadToken(BUCKET_NAME, null, expireSeconds, putPolicy);
        System.out.println(upToken);
    }

    /**
     * 上传文件
     */
    public static void uploadPic(String key, String filePath) {
    
    
        KEY = key;FILE_PATH = filePath;
        //构造一个带指定 Region 对象的配置类,这里可能需要根据自己情况改一下,点进源码看看情况,根据报错改region
        Configuration cfg = new Configuration(Region.region2());
        UploadManager uploadManager = new UploadManager(cfg);
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        String upToken = auth.uploadToken(BUCKET_NAME);
        try {
    
    
            Response response = uploadManager.put(FILE_PATH, KEY, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            System.out.println(putRet.key);
            System.out.println(putRet.hash);
        } catch (QiniuException ex) {
    
    
            Response r = ex.response;
            System.err.println(r.toString());
            try {
    
    
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
    
    
                ex2.printStackTrace();
            }
        }
    }

    /**
     * 返回地址
     * @return
     */
    public static String picUrl() {
    
    
        String url = "http://r234valei.hn-bkt.clouddn.com";
        String picUrl = url + "/" + KEY;
        return picUrl;
    }
}

JDBC工具类

package top.sehnsucht.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/10/29
 */

public class DBUtil {
    
    
    // 定义数据库连接参数
    public static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/junior";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "818181";


    // 注册数据库驱动
    static {
    
    
        try {
    
    
            Class.forName(DRIVER_CLASS_NAME);
        } catch (ClassNotFoundException e) {
    
    
            System.out.println("注册失败!");
            e.printStackTrace();
        }
    }

    // 获取连接
    public static Connection getConn() throws SQLException {
    
    
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }

    // 关闭连接
    public static void closeConn(Connection conn) {
    
    
        if (null != conn) {
    
    
            try {
    
    
                conn.close();
            } catch (SQLException e) {
    
    
                System.out.println("关闭连接失败!");
                e.printStackTrace();
            }
        }
    }
    //测试
    public static void main(String[] args) throws SQLException {
    
    
        System.out.println(DBUtil.getConn());
    }
}

service

PhotoService

package top.sehnsucht.service;

import top.sehnsucht.vo.Photo;

import java.util.ArrayList;
import java.util.Map;

/**
 * @Description: 图片业务接口
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */

public interface PhotoService {
    
    
    /**
     * 获取所有图片路径
     * @return
     */
    ArrayList<Map<String, String>> getAllPhotos();

    /**
     * 添加图片到数据库
     * @param name
     * @param photourl
     */
    void addPhoto(String name, String photourl);

    /**
     * 根据id查找图片
     * @param id
     * @return
     */
    Photo selectPhotoById(Integer id);
}

PhotoServiceImpl

package top.sehnsucht.service.impl;

import top.sehnsucht.dao.PhotoDao;
import top.sehnsucht.service.PhotoService;
import top.sehnsucht.vo.Photo;

import java.util.ArrayList;
import java.util.Map;

/**
 * @Description: 图片业务实现类
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */

public class PhotoServiceImpl implements PhotoService {
    
    
    private PhotoDao photoDao;

    public PhotoServiceImpl(PhotoDao photoDao) {
    
    
        this.photoDao = photoDao;
    }


    @Override
    public ArrayList<Map<String, String>> getAllPhotos() {
    
    
        return photoDao.getAllPhotos();
    }

    @Override
    public void addPhoto(String name, String photourl) {
    
    
        photoDao.addPhoto(name, photourl);
    }

    @Override
    public Photo selectPhotoById(Integer id) {
    
    
        return photoDao.getPhotoById(id);
    }
}

Dao

PhotoDao

package top.sehnsucht.dao;

import top.sehnsucht.vo.Photo;

import java.util.ArrayList;
import java.util.Map;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */

public interface PhotoDao {
    
    

    /**
     * 返回ArrayList<Map<String,String>>,方便转成json传到前端
     * @return
     */
    ArrayList<Map<String,String>> getAllPhotos();

    /**
     * 添加photo到数据库中
     * @param name
     * @param photourl
     */
    void addPhoto(String name, String photourl);

    /**
     * 获得最大的id
     * @return
     */
    Integer getMaxId();

    /**
     * 根据id查找图片
     * @param id
     * @return
     */
    Photo getPhotoById(Integer id);

    /**
     * 获得数据库中图片的数量
     * @return
     */
    Integer photoCount();
}

PhotoDaoImpl

package top.sehnsucht.dao.impl;

import top.sehnsucht.dao.PhotoDao;
import top.sehnsucht.util.DBUtil;
import top.sehnsucht.vo.Photo;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */

public class PhotoDaoImpl implements PhotoDao {
    
    
    @Override
    public ArrayList<Map<String, String>> getAllPhotos() {
    
    
        Connection conn = null;
        PreparedStatement ps = null;
        FileInputStream in = null;
        ResultSet rs = null;
        ArrayList<Map<String, String>> arrs = new ArrayList<>();
        try {
    
    
            conn = DBUtil.getConn();
            String sql = "select id,name,photourl from photo order by id";
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery(sql);
            while (rs.next()) {
    
    
                Map<String, String> map = new HashMap();
                Integer id = rs.getInt(1);
                String name = rs.getString(2);
                String photourl = rs.getString(3);
                System.out.println("查询: " + id + " " + name + " " + photourl);
                map.put("id", id.toString());
                map.put("name", name);
//                map.put("photourl",photourl);
                arrs.add(map);
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            DBUtil.closeConn(conn);
            if (null != ps) {
    
    
                try {
    
    
                    ps.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
        return arrs;
    }

    @Override
    public Photo getPhotoById(Integer id) {
    
    
        Connection conn = null;
        PreparedStatement ps = null;
        FileInputStream in = null;
        ResultSet rs = null;
        Integer thisId = null;
        String name = null;
        String photourl = null;
        try {
    
    
            conn = DBUtil.getConn();
            System.out.println("id:" + id);
            String sql = "select * from photo where id = " + id;
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery(sql);
            while (rs.next()) {
    
    
                thisId = rs.getInt(1);
                name = rs.getString(2);
                photourl = rs.getString(3);
                System.out.println(thisId);
                System.out.println(name);
                System.out.println(photourl);
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            DBUtil.closeConn(conn);
            if (null != ps) {
    
    
                try {
    
    
                    ps.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
        return new Photo(thisId, name, photourl);
    }

    @Override
    public Integer photoCount() {
    
    
        Connection conn = null;
        PreparedStatement ps = null;
        FileInputStream in = null;
        ResultSet rs = null;
        int ans = 0;
        try {
    
    
            conn = DBUtil.getConn();
            String sql = "select id,name from photo ";
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery(sql);
            while (rs.next()) {
    
    
                ans++;
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            DBUtil.closeConn(conn);
            if (null != ps) {
    
    
                try {
    
    
                    ps.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
        return ans;
    }

    @Override
    public void addPhoto(String name, String photourl) {
    
    
        Connection conn = null;
        PreparedStatement ps = null;
        try {
    
    
            conn = DBUtil.getConn();
            String sql = "insert into photo (id,name,photourl)values(?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, getMaxId() + 1);//数据库表我弄成自增的了
            ps.setString(2, name);
            ps.setString(3, photourl);
            int count = ps.executeUpdate();
            if (count > 0) {
    
    
                System.out.println("插入成功!");
            } else {
    
    
                System.out.println("插入失败!");
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            DBUtil.closeConn(conn);
            if (null != ps) {
    
    
                try {
    
    
                    ps.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }

    @Override
    public Integer getMaxId() {
    
    
        Connection conn = null;
        PreparedStatement ps = null;
        FileInputStream in = null;
        ResultSet rs = null;
        int ans = 0;
        try {
    
    
            conn = DBUtil.getConn();
            String sql = "select max(id) from photo";
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery(sql);
            while (rs.next()) {
    
    
                ans = rs.getInt(1);
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            DBUtil.closeConn(conn);
            if (null != ps) {
    
    
                try {
    
    
                    ps.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
        return ans;
    }
}

vo

MyPutRet

这个是七牛云返回的一个json,不过好像没有用上

package top.sehnsucht.vo;

import lombok.Data;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */
@Data
public class MyPutRet {
    
    
    public String key;
    public String hash;
    public String bucket;
    public long fsize;
}

Photo

实体类,干脆直接放vo了

package top.sehnsucht.vo;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/11/5
 */
@Data
@AllArgsConstructor
public class Photo {
    
    
    private Integer id;
    private String name;
    private String photourl;
}

Result

layui返回对象

package top.sehnsucht.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/10/9
 * ~~(^_^)~~
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
    
    
    //返回码
    private Integer code;
    //返回描述
    private String message;
    //返回数据
    private T data;
    //分页查询总记录
    private Long count;

    public static Result<Object> success() {
    
    
        return new Result(0, "success", null, null);
    }

    public static Result<Object> success(String message) {
    
    
        return new Result(0, message, null, null);
    }

    public static Result<Object> success(Object data, Long count) {
    
    
        return new Result(0, "success", data, count);
    }

    public static Result<Object> fail() {
    
    
        return new Result(1, "fail", null, null);
    }

    public static Result<Object> fail(String message) {
    
    
        return new Result(1, message, null, null);
    }
}

webapp

部分页面引用了jquerylayui

web.xml

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <display-name>Archetype Created Web Application</display-name>
  
  <servlet>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>top.sehnsucht.UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/upload</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>jdbc</servlet-name>
    <servlet-class>top.sehnsucht.JDBCServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>jdbc</servlet-name>
    <url-pattern>/jdbc</url-pattern>
  </servlet-mapping>
  
</web-app>

data.jsp

<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="top.sehnsucht.vo.Result" %>
<%@ page import="top.sehnsucht.dao.PhotoDao" %>
<%@ page import="top.sehnsucht.dao.impl.PhotoDaoImpl" %>
<%@ page import="top.sehnsucht.service.PhotoService" %>
<%@ page import="top.sehnsucht.service.impl.PhotoServiceImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    response.setHeader("Content-Type", "application/json;charset=UTF-8");//注意加上这一句

    System.out.println("现在路径是: " + request.getRequestURL());

    Result result = new Result();
    result.setCode(0);
    result.setCount(1L);

    PhotoDao photoDao = new PhotoDaoImpl();
    PhotoService photoService = new PhotoServiceImpl(photoDao);

    String json = JSON.toJSONString(photoService.getAllPhotos());

    out.println("{\"code\":" + result.getCode() + ",\"msg\":\"\",\"count\":" + result.getCount() + ",\"data\":" + json + "}");
%>

detail.jsp

<%@ page import="top.sehnsucht.service.PhotoService" %>
<%@ page import="top.sehnsucht.service.impl.PhotoServiceImpl" %>
<%@ page import="top.sehnsucht.vo.Photo" %>
<%@ page import="top.sehnsucht.dao.PhotoDao" %>
<%@ page import="top.sehnsucht.dao.impl.PhotoDaoImpl" %>
<%--
  Created by IntelliJ IDEA.
  User: windows
  Date: 2021/10/29
  Time: 10:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style>
        img {
    
    
            width: 100%;
            height: 100%;
        }
    </style>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css">
    <script src="${pageContext.request.contextPath}/layui/layui.js"></script>
    <script src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
</head>
<body>

<img id="img" alt="picture" src="">

<script>
    <%
        PhotoDao photoDao = new PhotoDaoImpl();
        PhotoService photoService = new PhotoServiceImpl(photoDao);
        Integer id = Integer.valueOf(request.getParameter("id"));
        Photo photo = photoService.selectPhotoById(id);
        System.out.println(photo);
        out.print("$(\"#img\").attr(\"src\", \"" + photo.getPhotourl() + "\")\n");
    %>
</script>
</body>
</html>

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: windows
  Date: 2021/10/29
  Time: 10:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>上传</title>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css">
    <script src="${pageContext.request.contextPath}/layui/layui.js"></script>
    <script src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
    <style>
        body {
    
    
            text-align: center;
        }
    </style>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/upload" enctype="multipart/form-data" class="layui-form">
    <br/><br/>
    <input type="file" name="uploadFile"  class="layui-btn" value="添加文件"/><button class="layui-btn" lay-submit lay-filter="*">上传</button>
    <br/><br/>
</form>
</body>
</html>

list.jsp

<%--
  Created by IntelliJ IDEA.
  User: windows
  Date: 2021/10/29
  Time: 10:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>列表</title>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css">
    <script src="${pageContext.request.contextPath}/layui/layui.js"></script>
    <script src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
</head>
<body>

<div style="border-radius: 5px;margin-top: 100px;margin-left: 600px;margin-right: 600px">
    <table id="demo" lay-filter="table-pic-filter"></table>
</div>

<script type="text/html" id="col-pic-toolbar">
    <a class="layui-btn layui-btn-xs" lay-event="look">查看</a>
</script>
<script>
    layui.use('table', function () {
    
    
        var table = layui.table;

        table.render({
    
    
            elem: '#demo'
            , height: 312
            , url: '/data.jsp' //数据接口
            , page: false //关闭分页
            , cols: [[ //表头
                {
    
    field: 'id', title: 'id', width: 100, sort: true, fixed: 'left'}
                , {
    
    field: 'name', title: 'name', width: 350}
                , {
    
    title: '操作', align: 'center', toolbar: '#col-pic-toolbar'}
            ]]
        });

        table.on('tool(table-pic-filter)', function (obj) {
    
    
            let data = obj.data;
            // alert(obj.data.name)
            let layEvent = obj.event;
            if (layEvent === 'look') {
    
    
                console.log(data.name)
                console.log("list id: " + data.id);
                sessionStorage.setItem("id", data.id)
                let url = '/transfer.jsp'
                layer.open({
    
    
                    type: 2,
                    title: "查看图片",
                    area: ['60%', '60%'],
                    shadeClose: true,
                    content: url
                });
            }
        });
    });
</script>
</body>
</html>

transfer.jsp

<%--
  Created by IntelliJ IDEA.
  User: windows
  Date: 2021/11/6
  Time: 12:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
</head>
<body>
<form action="detail.jsp">
    <label for="id"></label><input type="text" name="id" id="id">
</form>
<script>
    $(document).ready(function () {
    
    
        let id = sessionStorage.getItem("id")
        console.log("id: " + id)
        $("#id").attr("value", id)
        console.log("val: " + $("#id").attr("value"))
        $("form").submit()
    })
</script>
</body>
</html>

servlet

JDBCservlet

package top.sehnsucht;

import top.sehnsucht.dao.PhotoDao;
import top.sehnsucht.dao.impl.PhotoDaoImpl;
import top.sehnsucht.service.PhotoService;
import top.sehnsucht.service.impl.PhotoServiceImpl;
import top.sehnsucht.util.Qiniu;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;


public class JDBCServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        //todo 存储到数据库里面
        PhotoDao photoDao = new PhotoDaoImpl();
        PhotoService photoService = new PhotoServiceImpl(photoDao);

        String filename = (String) req.getAttribute("filename");
        String filepath = (String) req.getAttribute("filepath");
        String fileurl = (String) req.getAttribute("fileurl");

        photoService.addPhoto(filename, fileurl);

        req.getRequestDispatcher("/list.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doGet(req, resp);
    }
}

UploadServlet

package top.sehnsucht;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import top.sehnsucht.util.Qiniu;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/10/29
 */

public class UploadServlet extends HttpServlet {
    
    

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        //判断文件是否可以上传
        boolean isMultipart = ServletFileUpload.isMultipartContent(req);
        //可以上传,有问题就报异常
        if (isMultipart) {
    
    
            //创建一个FileItem工厂,通过工厂创建文件上传核心组件ServletFileUpload对象
            ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
            try {
    
    
                //通过核心上传组件解析request请求,获取表单的所有表单项,表单的每一个表单项对应一个FileItem
                List<FileItem> items = upload.parseRequest(req);
                Iterator<FileItem> it = items.iterator();
                for (FileItem item : items) {
    
    
                    if (item.isFormField()) {
    
    
                        System.out.println("其他类型文件");
                    } else {
    
    
                        String filename = item.getName();
                        String path = req.getSession().getServletContext().getRealPath("/") + "\\1";
                        File file = new File(path);
                        if (!file.exists()) {
    
    
                            file.mkdirs();
                        }
                        file = new File(path, filename);
                        item.write(file);
                        System.out.println(filename + "上传成功");

                        Qiniu.uploadPic(filename,path + "\\" + filename);
                        System.out.println("图片地址为:" + Qiniu.picUrl());

                        req.setAttribute("filename",filename);
                        req.setAttribute("filepath",path + "\\" + filename);
                        req.setAttribute("fileurl",Qiniu.picUrl());

                        System.out.println("七牛云上传成功");

                        req.getRequestDispatcher("/jdbc").forward(req, resp);
                        return;
                    }
                }
            } catch (Exception e) {
    
    
                e.printStackTrace();
            }
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doGet(req, resp);
    }
}

数据库

create table photo (
    id int not null auto_increment primary key ,
#     groupid int comment '组名',
    name varchar(50) comment '图片名称',
    photourl varchar(200) comment '照片路径'
)
default charset = utf8;

依赖

有些可能没用到

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.18</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.0.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>7.7.0</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

如果需要源码的,请点击这里:要收取积分的哦

猜你喜欢

转载自blog.csdn.net/Dueser/article/details/121178433