java使用okhttp3实现gofastdfs上传

2023-11-16

1.maven

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

2.代码

2.1 GoFastUtil.java
package com.gofastdfs.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.*;

public class GoFastUtil {

    /**
     * 上传文件到影像服务器
     *
     * @param url   上传URL
     * @param scene 场景
     * @param bytes 文件字节
     * @return 返回
     */
    public static GoFastFileResult upload(String url, String scene, String fileName, byte[] bytes) throws Exception {
        MultipartBody multipartBody = new MultipartBody.Builder().
                setType(MultipartBody.FORM)
                .addFormDataPart("file", fileName, RequestBody.create(MediaType.parse("multipart/form-data;charset=utf-8"), bytes))
                .addFormDataPart("output", "json")
                .addFormDataPart("scene", scene)
                .build();
        return getUpload(url, multipartBody);
    }


    private static GoFastFileResult getUpload(String url, MultipartBody multipartBody) throws Exception {
        GoFastFileResult goFastFileResult = new GoFastFileResult();
        try {
            Request request = new Request.Builder().url(url).post(multipartBody).build();
            Response response = new OkHttpClient().newCall(request).execute();
            if (response.isSuccessful()) {
                ResponseBody body = response.body();
                if (body != null) {
                    String result = body.string();
                    System.out.println(result);
                    JSONObject jsonObject = JSON.parseObject(result);
                    if (String.valueOf(jsonObject.get("status")).equals("fail")) {
                        throw new Exception("上传文件异常:" + jsonObject.get("message"));
                    } else {
                        goFastFileResult.setUrl(String.valueOf(jsonObject.get("url")));
                        goFastFileResult.setMd5(String.valueOf(jsonObject.get("md5")));
                        goFastFileResult.setPath(String.valueOf(jsonObject.get("path")));
                        goFastFileResult.setDomain(String.valueOf(jsonObject.get("domain")));
                        goFastFileResult.setScene(String.valueOf(jsonObject.get("scene")));
                        goFastFileResult.setSize(Long.parseLong(String.valueOf(jsonObject.get("size"))));
                        goFastFileResult.setMtime(Long.parseLong(String.valueOf(jsonObject.get("mtime"))));
                        goFastFileResult.setScenes(String.valueOf(jsonObject.get("scenes")));
                        goFastFileResult.setRetmsg(String.valueOf(jsonObject.get("retmsg")));
                        goFastFileResult.setRetcode(String.valueOf(jsonObject.get("retcode")).equals("0"));
                        goFastFileResult.setSrc(String.valueOf(jsonObject.get("src")));
                    }
                }
            }
        } catch (Exception e) {
            System.out.println("上传文件到影像服务器异常:" + e);
            throw new Exception("上传文件异常", e);
        }
        return goFastFileResult;
    }
}

2.2 GoFastFileResult.java
package com.gofastdfs.utils;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;

@Data
@Accessors(chain = true)
@ToString
public class GoFastFileResult implements Serializable {

    private String url;
    private String md5;
    private String path;
    private String domain;
    private String scene;
    private long size;
    private long mtime;
    private String scenes;
    private String retmsg;
    private Boolean retcode;
    private String src;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java使用okhttp3实现gofastdfs上传 的相关文章

  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 将构造函数作为参数传递给方法

    我是java新手 开始研究构造函数 我看到一些构造函数作为参数传递给方法的示例 请告诉我当构造函数作为参数传递给方法时会发生什么 或者建议我一些链接 我可以在其中获得有关使用构造函数的足够知识 根据您需要传递构造函数的目的 您可以考虑传递供
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 从 Spring MVC XML 文件转移到 javaconfig。我真的对我的数据库 XML 文件感到困惑

    我从 Spring MVC XML 文件转移到 javaconfig 我真的对我的数据库 XML 文件感到困惑 我不知道如何让 Hibernate4 工作以及我的 JBoss JNDI 数据源工作 有人可以告诉我如何使 javaconfig
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 运行 java -jar 时出现 java.lang.ClassNotFoundException

    我正在使用 ant 来构建我的build xml文件 它编译正常 但随后得到运行时java lang NoClassDefFoundError通过 运行生成的 jar 时java jar my jar jar 似乎这个问题出现了很多 但没有
  • 这个等待通知线程语义的真正目的是什么?

    我刚刚遇到一些代码 它使用等待通知构造通过其其他成员方法与类中定义的线程进行通信 有趣的是 获取锁后 同步范围内的所有线程都会在同一锁上进行定时等待 请参见下面的代码片段 随后 在非同步作用域中 线程执行其关键函数 即 做一些有用的事情1
  • JavaFX使节点覆盖父节点边框颜色

    我有一个如下所示的节点 仅使用 css 我希望标签覆盖其父边框颜色 因此标签下方的边框颜色部分变得不可见 我用来制作这个边框的CSS代码 fx border color black fx border width 3 fx border r
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入
  • 如何在 JPA 和 Hibernate 中将数据库生成的列值定义为只读字段?

    使用 MariaDB 10 2 可以定义日期时间的默认值 例如创建和最后修改 我应该如何将此列作为只读字段访问 因为这个值应该只在数据库的控制之下 并且不应该从代码中修改 但我想在代码中读取这个属性 这很简单 只需设置insertable
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • 如何在不反编译的情况下更改已编译的.class文件?

    我想更改 class 文件方法 我安装 JD Eclipse Decompiler 并打开 class 文件 我添加了一些代码并保存 class 文件 但是 class 文件没有改变 我不知道如何使用反编译器 如果可能的话 如何在不使用反编
  • HTTP 状态 405 - 此 URL java servlet 不支持 HTTP 方法 POST [重复]

    这个问题在这里已经有答案了 我无法使页面正常工作 我有要发布的表单方法和我的 servlet 实现doPost 然而 它不断地向我表明我并不支持POST方法 我只是想做一个简单的网站并将值插入到我的 MySQL 数据库中 type Stat
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • 如何减去两个 XmlGregorianCalendar 对象来创建一个 Duration 对象?

    我想计算两个时间之间的差值XmlGregorianCalendar对象 从而创建一个Duration object 但我还没有找到执行减法的干净方法 你会怎么做 那应该是 DatatypeFactory newDuration xgc2 t
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 如何使用自定义 JDK 构建 Jenkins 项目?

    我有一个常规的 Jenkins 实例 运行一些多分支管道 该实例在 JDK 11 上运行 因为 Jenkins 并不真正支持更高版本 没关系 但不好的是 我的所有管道似乎也都受到 Java 11 的限制 Jenkins 仅使用它自己也使用的

随机推荐

  • win8.1仅允许运行使用网络级别身份认证的远程桌面计算机连接,使用Win10通过Mstsc远程连接 Server 2012 R2 时出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP...

    使用Win10通过Mstsc远程连接 Server 2012 R2 时出现 身份验证错误 要求的函数不受支持 这可能是由于CredSSP加密Oracle修正 最终解决方法 原因 因为CVE 2018 0886 的 CredSSP 2018
  • unity shader 之基础四 数学

    4 2 笛卡尔坐标系 笛卡尔坐标系分为二维和三维坐标系 4 2 1二位坐标系 OpenGL 和 DirectX 二位坐标系是不同的 OpenGL 和 DirectX 是不同的图形访问接口 用来和硬件交互的 二维坐标系 是可以相互转换的 既
  • 【经典】centos 安装 mysql

    CentOS第一次安装MySQL的完整步骤 目录 1 官方安装文档 2 下载 Mysql yum包 3 安转软件源 4 安装mysql服务端 5 首先启动mysql 6 接着检查mysql 的运行状态 7 修改临时密码 7 1 获取MySQ
  • [转] 英文写作中分号和冒号的使用

    我们先来了解下分号和冒号的作用 分号的主要作用是来连接两个在语法上平等的成分 冒号的主要作用是引起读者对冒号后面内容的注意力 下面总结下规则 用分号的情况 1 用分号连接两个独立的句子 两个独立的句子不能够用逗号隔开 如果用逗号 必须逗号后
  • idea忽略.iml文件

    1 点击file文件下的设置中 2 点下file types 文件类型 进入到file types窗口 如图 然后点击忽略文件那添加需要忽略的类型
  • 自用HTML+CSS学习笔记

    HTML CSS学习笔记 1 Web标准 Web标准也称为网页标准 由一系列的标准组成 大部分由W3C World Wide Web Consortium 万维网联盟 负责制定 由三个组成部分 HTML 负责网页的结构 页面元素和内容 CS
  • IT的教育

    IT的教育 李颜芯 CSDN的网友大家好 欢迎大家收看这一起的CSDN视频访谈节目 今天我们请到了两位嘉宾 一位是 金旭亮 老师 一位是 金戈 老师 两位老师作一下自我介绍怎么样 金旭亮 我先介绍一下吧 我叫金旭亮是北京理工大学的讲师 我在
  • 怎样把pdf转换成word-多语言ocr支持

    http jingyan baidu com article 86fae34699bb4e3c49121a23 html PDF格式良好的视觉阅读性和通用性使得PDF文件的使用越来越广泛了 网络上的PDF资料也越来越多 但是我们往往想要提出
  • 【大屏】 amap + echarts 踩坑以及避免办法

    amap echarts 踩坑以及避免办法 大屏 踩坑 代码 大屏 html body container margin 0 padding 0 width 5376px height 1944px background color 000
  • softmax用于分类问题/逻辑回归

    参考 d2l 线性回归问题最后输出一个参数用于预测 多分类问题最后输出多个维度的数据 多少个output channels就有多少个类别 softmax是一种激活函数 它常见于分类问题的最后一层激活函数 目的是让输出属于一个概率密度函数 我
  • AI「领悟」有理论解释了!谷歌:两种脑回路内部竞争,训练久了突然不再死记硬背...

    梦晨 发自 凹非寺量子位 公众号 QbitAI 谷歌PAIR团队不久前撰文介绍了AI的 领悟 Grokking 现象 训练久了突然不再死记硬背 而是学会举一反三 有了泛化能力 不出一个月 另一只团队 主要成员来自DeepMind 表示 已经
  • 说实话,其实Spring Security并没有看起来那么复杂(附源码)

    权限管理是每个项目必备的功能 只是各自要求的复杂程度不同 简单的项目可能一个 Filter 或 Interceptor 就解决了 复杂一点的就可能会引入安全框架 如 Shiro Spring Security 等 其中 Spring Sec
  • Android Studio使用技巧:添加Module依赖

    今天在学习使用Volley的时候 下载好了Volley的Module文件 成功import到了Android Studio 但是却不知道怎么在自己的项目 Module 里使用 经朋友指点才知道原来还有给自己的项目添加Module Depen
  • JVM反射的实现

    实现方式 有两种不同的实现方式 一种是本地实现 一种是动态实现 JVM开始运行之后 方法的代码和入口地址都能获取到 想要通过反射调用方法 无非就是找到方法地址 然后将参数传递进去执行 本地实现就是使用native方法直接调用方法 但是这种方
  • PS调节图片:拉伸、变形

    一 对图片进行变形处理 打开PS软件 选中需要处理的图片 ctrl J复制一层图层 点击编辑选项 在下拉菜单里找到变换 变形选项 即可对图片进行变形操作 注意变形的图片下边还有一层图形 那即是我们复制图层的效果 复制图层相当于在图片上面加了
  • 计算机网络基础知识总结及思维导图(六)应用层

    文章目录 六 应用层 6 1 域名系统DNS 6 1 1 基础概念 6 1 2 域名服务器 6 2 文件传送协议 6 2 1 介绍 6 2 2 FTP协议 6 2 3 简单文件传送协议TFTP 6 3 远程终端协议TELNET 6 4 万维
  • 哪个网站云服务器最便宜,哪家云服务器比较便宜

    哪家 云服务器 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 其管理方式比物理服务器更简单高效 用户无需提前购买硬件 即可迅速创建或释放任意多台云服务器 我们在选择云服务器时 多从CPU 内存和磁盘特性等方面来对比 在这些因素相差
  • webdriver在浏览器中显示版本不对的解决方法

    相信看到这的小伙伴已经安装好了selenium包了 pip3 install selenium 可能是运行的时候出现这样的错误 SessionNotCreatedException Message session not created T
  • k8s系列——部署k8s集群

    1 环境准备 1 1 安装操作系统 此处选用centos 7 操作系统进行安装操作 1 2 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 1 3 关闭selinux s
  • java使用okhttp3实现gofastdfs上传

    1 maven