七牛云:上传图片+删除图片

上传图片到七牛云

示例:

	/**
     * 上传图片到服务器
     * @param upfile 文件对象
     * @return 图片链接  
     * @throws IOException s
     */
    public String uploadFile(MultipartFile upfile) throws IOException {
        InputStream inputStream = (InputStream) upfile.getInputStream();
        String fileName = upfile.getOriginalFilename();//获取文件名
        fileName = getFileName(fileName);
        fileName =  group + "/" + fileName;
        // uploadQNImg() 方法代码在下方
        String path = uploadQNImg(inputStream, fileName); //这个path是可以直接打开的图片链接,可以直接存储到数据库中
        //System.out.println("七牛云返回的图片链接:" + path);
        return path;
    }
    //在文件名后缀前加一个时间戳,防止图片重名
    private String getFileName(String fileName) {
        int index = fileName.lastIndexOf(".");
        final SimpleDateFormat sDateFormate = new SimpleDateFormat("yyyymmddHHmmss");  //设置时间格式
        String nowTimeStr = sDateFormate.format(new Date()); // 当前时间
        fileName = fileName.substring(0, index) + "_" + nowTimeStr + fileName.substring(index);
        return fileName;
    }

	/**
     * 删除服务器图片
     * @param key key为不加域名的在七牛云中的图片的名称
     * 如:http://qlwdwvwug.hn-bkt.clouddn.com/33_20212604132639.jpg
     * key为 33_20212604132639.jpg
     */
     public void deleteFile(String key){
     //deleteFile()方法在下方
     	deleteFile(String key);
	}
	

上传 uploadQNImg(InputStream file, String key)
and
删除 deleteFile(String key) 具体实现方法:

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.io.InputStream;

/**
 * 七牛云图片操作工具类, 写在服务端
 */
public class QiniuUtil {

    // 设置需要操作的账号的AK和SK
    private static final String ACCESS_KEY = "填充";
    private static final String SECRET_KEY = "填充";

    // 要上传的空间名称
    private static final String BUCKETNAME = "填充";

    // 密钥
    private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

    // 外链默认域名
    private static final String DOMAIN = "http://填充";

    //组名
    private static String group = "可有可无";

    /**
     * 将图片上传到七牛云
     */
    public static String uploadQNImg(InputStream file, String key) {

        UploadManager uploadManager = new UploadManager(new Configuration());// 生成上传凭证,然后准备上传
        try {
            Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
            String upToken = auth.uploadToken(BUCKETNAME);
            try {
                Response response = uploadManager.put(file, key, upToken, null, null);
                // 解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

                String returnPath = DOMAIN +"/"+ putRet.key;
                // 这个returnPath是获得到的外链地址,通过这个地址可以直接打开图片
                return returnPath;
            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    
     
	/**
     * 通过key删除七牛云上的图片
     * key为不加域名的在七牛云中的图片的名称
     * 如:http://qlwdwvwug.hn-bkt.clouddn.com/33_20212604132639.jpg
     * key为 33_20212604132639.jpg
     */
    public void deleteFile(String key){
        //创建凭证
        Auth auth = Auth.create(accessKey, secretKey);
        BucketManager bucketManager = new BucketManager(auth, new Configuration());
        try {
            bucketManager.delete(bucket, key);
        } catch (QiniuException ex) {
            //如果遇到异常,说明删除失败
            System.err.println(ex.code());
            System.err.println(ex.response.toString());
        }
    }
}

Spring Boot整合七牛云是一个常见的用于文件存储和管理的任务。七牛云提供了一套完整的RESTful API和SDK,可以方便地在Spring应用中集成。以下是实现这些功能的基本步骤: 1. **添加依赖**: - 首先,在你的`pom.xml`中引入七牛官方的Java SDK依赖,如Spring Cloud Storage和Qiniu SDK。 ```xml <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.4.0+</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> ``` 2. **配置七牛账号信息**: 在`application.properties`或`application.yml`中添加七牛的Access Key、Secret Key以及Bucket名称等配置。 ```properties qiniu.accessKey=<your_access_key> qiniu.secretKey=<your_secret_key> qiniu.bucketName=<your_bucket_name> ``` 3. **创建上传服务**: 使用`QiniuUploader`类,你可以创建一个上传策略(包括是否生成缩略图、过期时间等)。然后调用`put`方法上传文件。 ```java @Autowired private QiniuManager qiniuManager; public String uploadFile(MultipartFile file) { // 检查文件有效性 if (file.isEmpty()) return "File is empty"; // 创建上传策略 Uploader uploader = new Uploader(qiniuManager.getUpToken(), file.getOriginalFilename()); try { String key = uploader.put(file.getInputStream(), null); // key是你在七牛上保存的文件名 return "Upload successful, key: " + key; } catch (Exception e) { return "Error uploading file: " + e.getMessage(); } } ``` 4. **下载和删除文件**: 对于下载,使用`get`方法,传入文件的Key即可。删除则通过`delete`方法,同样需要token。 ```java public ResponseResult downloadFile(String key) { ResponseInfo info = qiniuManager.getFile(key); // 下载并返回文件内容 } public boolean deleteFile(String key) { return qiniuManager.deleteFile(key) > 0; // 返回布尔值表示删除成功与否 } ``` 5. **处理错误和异常**: 七牛API可能会抛出各种异常,记得捕获并妥善处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值