javawebservletjsp使用七牛云api上传图片(代码片段)

霜序0.2℃ 霜序0.2℃     2023-01-28     264

关键词:

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上传图片。问题:为了给图片分类,现在需要把客户端上传的头像图片加一个前缀路径。例... 查看详情