关键词:
文章目录
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;
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 laravel可以使用七牛云吗
参考技术A可以,看这里https://github.com/zgldh/qiniu-laravel-storage 查看详情
七牛云的使用(代码片段)
当七牛云存储区域地域简称不对就会抛以下异常ResponseInfo:com.qiniu.http.Response@46238e3f,status:400,reqId:5cYAAAADmTAShB8W,xlog:X-Log,xvia:,adress:up-z1.qiniu.com/222.222.95.22:80,duration:0.000000s,error:incorrectregion, 查看详情
使用七牛云做图床
参考技术A背景对于程序员来说,最好的写作方式莫过于使用markdown的语法进行编辑,好处就不多讲,但是缺点也很明显,我相信很多程序员在使用markdown的客户端(如Typora)进行编辑的时候都会遇到图床的问题。图床简单的说就... 查看详情
七牛云javaapi使用
1、引入jar<dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.3</version></dependency>2、上传文件packagecom.hui.qiniu;im 查看详情
kindeditor加入七牛云上传
...解决不支持重定向的请求方式,比如小程序上传 本次使用的是七牛云phpsdk;composerrequireqiniu/php-sdk 在Kindeditor/php下添加config.php主要是配置参数 查看详情
七牛云实现js上传
七牛云的官方API写的一塌糊涂。最主要的,还是版本兼容的问题。 一、引入文件引入了两个文件:1.jquery-1.10.2.min.js2.plupload.full.min.js3.qiniu.js版本太重要了。我提供了下载地址。二.html代码<pclass="tip1">本demo实现的图片预览... 查看详情
thinkphp6上传图片七牛云如何上传文件到七牛云对象储存cos
...家如何上配置ThinkPHP6上传文件至七牛云.然后我们就可以使用$url=Qiniu::upload($filePath,$filename);传入文件的相对路径或绝对路径加上文件名,在文件上传成功后自动又将图片上传至七牛云~ 查看详情
dedecms织梦七牛云存储二次开发
...的优势1、节省自身服务器带宽、流量、储存空间,因为使用七牛云前端JSSDK上传到七牛云。2、提高网站加载速度,因为大部分的流量由七牛云分发,减少了自身服务器带宽的占用,七牛云的CDN比普通的自建服务器还是要快的。3... 查看详情
2018最新七牛云存储8折充值优惠码
...度最大的充值优惠码:61d1fd4d。 该优惠码可重复多次使用,建议收藏。七牛优惠码是七牛云存储官方提供的,尽可能的会大客户降低成本的内部优惠码,想要购买七牛云存储的用户可以在充值时选择使用优惠码,输入2018最新... 查看详情
web上传图片到七牛云服务器(代码片段)
本文通过javaweb的使用,把要上传的图片通过浏览器上传到服务器上面.`文本仅供参考,可能出现很多不合理;`1创建对应的jsp页面:下面是jsp下面的对应的from表单,上传文件用的那么ImgFiles的属性名称,同样你可以使用其他的,或者... 查看详情
七牛云对象存储java使用
...心功能及服务创建对象存储空间上传文件测试JavaSDK简介使用SDK上传文件下载文件测试对象存储服务简介七牛云海量存储系统(KODO)是自主研发的非结构化数据存储管理平台,支持中心和边缘存储。平台经过多年大规... 查看详情
django之集成七牛云对象存储(代码片段)
Python3+Django2.0集成“七牛云”对象存储(SDK文档地址:http://developer.qiniu.com/kodo/api/3928/error-responses)步骤1: 在七牛云中创建一个“存储空间”(需要实名认证,每月免费10GB)步骤2: 在“个人面板”-->“秘钥管理”中... 查看详情
七牛云--对象存储
七牛云--对象存储(此SDK适用于Java7及以上版本)使用maven创建工程:pom.xml配置文件<!--java7及以上版本,qiniu-java-sdk的版本[7.2.0,7.2.99]--><dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk< 查看详情
七牛云--开发笔记
...您的项目中。然后在您的项目中引入autoloader: 基本使用方法安装好SDK后,接下来介绍如何使用SD 查看详情
七牛云加速域名配置
...cdn加速,让你的网站飞起来之前发过一篇是没有备案的,使用测试域名来缓存静态文件,效果也是杠杠的。如果你还没有备案,先看这篇文章吧,域名没备案使用七牛cdn加速 。步入正题了(为了节约博主发文的时间,尽量少... 查看详情
七牛云存储优惠码及使用方法8折
...了追求响应速度以及减轻服务器与带宽的负载压力,开始使用云存储技术,大部分网站的需求是存储静态文件或是CDN镜像加速,而这些使用者中有一大部分是使用的七牛云存储,目前七牛针对标准用户免费提供存储空间10GB,免... 查看详情
七牛云文件上传助手(代码片段)
...没有一个好的上传工具,于是写了这样的一个工具。效果使用方法下载程序包点击下载解压后直接在config.json文件里面天上自己七牛云相关的信息。config"access_key":"************"," 查看详情
七牛云上传图片名添加前缀
先来说下自己遇到的问题吧。项目使用七牛云来存储用户头像,大致流程:客户端从后台获取到uploadToken和domain,然后客户端通过安卓SDk上传图片。问题:为了给图片分类,现在需要把客户端上传的头像图片加一个前缀路径。例... 查看详情