• Java七牛云报400错误


    Java七牛云报400错误

    报错:{ResponseInfo:com.qiniu.http.Response@29a28d60,status:400, reqId:HioAAG-QCb69S40V, xlog:body;UP/400, xvia:, adress:up.qiniu.com/115.231.97.46:80, duration:0.000000 s, error:incorrect region, please use up-z2.qiniup.com}
    1.添加maven依赖

    <dependency>
    				<groupId>com.qiniu</groupId>
    				<artifactId>qiniu-java-sdk</artifactId>
    				<version>7.2.10</version>
    			</dependency>
    

    2.ImgUploadResult对象

    import java.math.BigDecimal;
    
    public class ImgUploadResult {
    
        /**
         * 是否上传成功
         */
        private boolean success;
    
        /**
         * 图片地址
         */
        private String url;
    
        /**
         * 图片尺寸,单位byte
         */
        private BigDecimal size;
    
        public boolean isSuccess() {
            return success;
        }
    
        public void setSuccess(boolean success) {
            this.success = success;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public BigDecimal getSize() {
            return size;
        }
    
        public void setSize(BigDecimal size) {
            this.size = size;
        }
    
    }
    

    3.QiNiuApi对象

    import java.math.BigDecimal;
    import java.util.Date;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.hwx.framework.util.DateUtil;
    import com.qiniu.common.QiniuException;
    import com.qiniu.common.Zone;
    import com.qiniu.http.Response;
    import com.qiniu.storage.Configuration;
    import com.qiniu.storage.UploadManager;
    import com.qiniu.util.Auth;
    
    public class QiNiuApi {
    
        private static Logger logger = LoggerFactory.getLogger(QiNiuApi.class);
    
        private String accessKey;
    
        private String secretKey;
    
        private String token;
    
        private UploadManager uploadManager;
        // 要上传的空间
        private String bucketname;
    
        /**
         * token过期时间
         */
        private Date expiredTime;
    
        // 上传之后保存文件url的前缀,前缀+upload方法的fileName参数可以构成一个可访问的文件url
        private String urlPrefix;
    
        public QiNiuApi(String accessKey, String secretKey, String bucketName, String urlPrefix) {
            this.accessKey = accessKey;
            this.secretKey = secretKey;
            this.bucketname = bucketName;
            this.urlPrefix = urlPrefix;
    
            Auth auth = Auth.create(this.accessKey, this.secretKey);
            this.token = auth.uploadToken(this.bucketname);
            this.expiredTime = DateUtil.addMinutes(new Date(), 40);
            Zone z = Zone.autoZone();
            Configuration c = new Configuration(z);
            this.uploadManager = new UploadManager(c);
        }
    
        public ImgUploadResult upload(byte[] data, String fileName) {
            ImgUploadResult result = new ImgUploadResult();
            result.setSuccess(true);
            if (null == data) {
                result.setSize(BigDecimal.ZERO);
                logger.error("上传到七牛的文件内容为Null,fileName{}.", fileName);
    
                return result;
            }
            try {
                // 调用put方法上传
                Response res = uploadManager.put(data, fileName, token);
                // 打印返回的信息
                if (null != res && res.isOK()) {
                    result.setUrl(urlPrefix + fileName);
                    result.setSize(new BigDecimal(data.length));
                } else {
                    logger.error("上传文件到七牛失败,reponse={},response.error={}.,", null != res ? res : "res为null",
                            null != res ? res.error : "");
                    result.setSuccess(false);
                    result.setSize(BigDecimal.ZERO);
                }
            } catch (QiniuException e) {
                Response r = e.response;
                try {
                    logger.error("上传文件到七牛失败,reponse={}:", r.bodyString(), e);
                } catch (QiniuException e1) {
                    logger.error("上传文件到七牛失败:", e);
                }
                result.setSuccess(false);
                result.setSize(BigDecimal.ZERO);
            } catch (Exception e) {
                logger.error("上传文件到七牛失败:", e);
                result.setSuccess(false);
                result.setSize(BigDecimal.ZERO);
            }
    
            return result;
        }
    
        public Date getExpiredTime() {
            return expiredTime;
        }
    
        public void setExpiredTime(Date expiredTime) {
            this.expiredTime = expiredTime;
        }
    
        /**
         * token是否已过期
         * 
         * @return
         */
        public boolean isExpired() {
            return new Date().compareTo(expiredTime) > 0;
        }
    
        public String getAccessKey() {
            return accessKey;
        }
    
        public void setAccessKey(String accessKey) {
            this.accessKey = accessKey;
        }
    
        public String getSecretKey() {
            return secretKey;
        }
    
        public void setSecretKey(String secretKey) {
            this.secretKey = secretKey;
        }
    
        public String getBucketname() {
            return bucketname;
        }
    
        public void setBucketname(String bucketname) {
            this.bucketname = bucketname;
        }
    
        public String getUrlPrefix() {
            return urlPrefix;
        }
    
        public void setUrlPrefix(String urlPrefix) {
            this.urlPrefix = urlPrefix;
        }
    
    }
    
    

    4.QiNiuFactory类

    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.commons.lang3.StringUtils;
    
    import com.alibaba.fastjson.JSONObject;
    import com.hwx.framework.base.exception.ServiceException;
    
    public class QiNiuFactory {
    
        private static Map<String, QiNiuApi> qiNiuApiContainer = new HashMap<String, QiNiuApi>();
    
        private static final String accessKey_KEY = "accessKey";
    
        private static final String secretKey_KEY = "secretKey";
    
        private static final String bucketName_KEY = "bucketName";
    
        private static final String urlPrefix_KEY = "urlPrefix";
    
        public static QiNiuApi getQiNiuApi(String qiNiuParam) {
    
            if (StringUtils.isBlank(qiNiuParam)) {
                throw new ServiceException("", "图片服务器参数无效");
            }
    
            JSONObject json = JSONObject.parseObject(qiNiuParam);
    
            String accessKey = json.getString(accessKey_KEY);
    
            String secretKey = json.getString(secretKey_KEY);
    
            String bucketName = json.getString(bucketName_KEY);
    
            String urlPrefix = json.getString(urlPrefix_KEY);
    
            if (StringUtils.isBlank(accessKey) || StringUtils.isBlank(secretKey) || StringUtils.isBlank(bucketName)
                    || StringUtils.isBlank(urlPrefix)) {
                throw new ServiceException("", "图片服务器参数无效");
            }
            if (null == qiNiuApiContainer.get(qiNiuParam)) {
                QiNiuApi qiNiuApi = new QiNiuApi(accessKey, secretKey, bucketName, urlPrefix);
                qiNiuApiContainer.put(qiNiuParam, qiNiuApi);
    
                return qiNiuApi;
            } else {
                QiNiuApi qiNiuApi = qiNiuApiContainer.get(qiNiuParam);
                if (qiNiuApi.isExpired()) {
                    qiNiuApi = new QiNiuApi(accessKey, secretKey, bucketName, urlPrefix);
                    qiNiuApiContainer.put(qiNiuParam, qiNiuApi);
                }
                return qiNiuApi;
            }
    
        }
    
    }
    
    

    5.把这边这个三类复制到自己的本地,引用自己本地包

    GitHub

  • 相关阅读:
    在Visual Studio中怎样快速添加代码段
    18个不常见的C#关键字,您使用过几个?
    C# 非常好用的组元Tuple
    C# List根据另一个List集合或数组排序
    Expression 核心操作符、表达式、操作方法
    如何避免频繁创建临时对象
    C# 23种设计模式
    C# 23种设计模式
    Api Cloud官方日期类型转换
    sql server 保留小数(续A)
  • 原文地址:https://www.cnblogs.com/szls-666/p/12494206.html
Copyright © 2020-2023  润新知