脚本宝典收集整理的这篇文章主要介绍了JavaWeb servlet jsp 使用七牛云API上传图片,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这次是上一次的改进版本,相对上次好很多,上次很多作业混在一起没法随便分开
有兴趣的可以看看我上次写的:JavaWeb servlet jsp 上传图片,图片存入数据库,图片从数据库中取出,页面显示图片
页面其实用了一点jquery和layui来写
文档:
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;
}
}
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());
}
}
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);
}
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);
}
}
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();
}
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;
}
}
这个是七牛云返回的一个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;
}
实体类,干脆直接放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;
}
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);
}
}
部分页面引用了jquery
和layui
<!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>
<%@ 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 + "}");
%>
<%@ 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>
<%--
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>
<%--
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>
<%--
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>
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);
}
}
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>
如果需要源码的,请点击这里:要收取积分的哦
以上是脚本宝典为你收集整理的JavaWeb servlet jsp 使用七牛云API上传图片全部内容,希望文章能够帮你解决JavaWeb servlet jsp 使用七牛云API上传图片所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。