最新版onenet平台之HTTP文件管理图片上传

这篇具有很好参考价值的文章主要介绍了最新版onenet平台之HTTP文件管理图片上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、准备工作

创建产品,添加操作设备,方式:HTTP,文件类型:图片和文本

平台文件管理文档:https://open.iot.10086.cn/doc/v5/fuse/detail/991

https://open.iot.10086.cn/doc/v5/fuse/detail/1402

新版onenet http,python,开发语言,http,网络协议,网络,postman

二、平台提供两种文件上传的方式

一、平台上操作

在设备管理下找到操作设备,上传的文件

新版onenet http,python,开发语言,http,网络协议,网络,postman

新版onenet http,python,开发语言,http,网络协议,网络,postman

二、PostmanAPI上传

先进行API鉴权,经过平台认证才能通过Postman发出Post请求

postman官网:Download Postman | Get Started for Free

官方文档:https://open.iot.10086.cn/doc/v5/fuse/detail/1402

请求方式:post

请求头:

Content-Type multipart/form-data
Authorization API鉴权

最新版onenet平台提供两种鉴权方式:设备接入安全鉴权API调用鉴权

1、设备接入安全鉴权Token(设备接入用到的)

https://blog.csdn.net/ab23456_/article/details/135711971?spm=1001.2014.3001.5501

看的这篇文章

2、API鉴权Authorization(图片上传需要用到)

文档:https://open.iot.10086.cn/doc/v5/fuse/detail/1464

在线编辑器:https://www.jyshare.com/compile/9/

新版没有相关的代码生成,旧版的开发文档有多种语言代码(其中Python代码的et过期了要修改才能用)

https://open.iot.10086.cn/doc/v5/develop/detail/635

生成Authorization的Java代码:

version:2022-05-01(区别于设备接入)

res:userid/用户id(用户级于平台对接)

access_key:用户的密钥(在用户中心里要手机验证码)

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class Token {
    
        public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey)
                throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
            StringBuilder sb = new StringBuilder();
            String res = URLEncoder.encode(resourceName, "UTF-8");
            String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), "UTF-8");
            sb.append("version=")
                    .append(version)
                    .append("&res=")
                    .append(res)
                    .append("&et=")
                    .append(expirationTime)
                    .append("&method=")
                    .append(signatureMethod)
                    .append("&sign=")
                    .append(sig);
            return sb.toString();
        }
    
        public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod) 
                throws NoSuchAlgorithmException, InvalidKeyException {
            String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version;
            String signature;
            byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod);
            signature = Base64.getEncoder().encodeToString(bytes);
            return signature;
        }
    
        public static byte[] HmacEncrypt(String data, String key, String signatureMethod)
                throws NoSuchAlgorithmException, InvalidKeyException {
            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
            SecretKeySpec signinKey = null;
            signinKey = new SecretKeySpec(Base64.getDecoder().decode(key),
                    "Hmac" + signatureMethod.toUpperCase());
    
            //生成一个指定 Mac 算法 的 Mac 对象
            Mac mac = null;
            mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase());
    
            //用给定密钥初始化 Mac 对象
            mac.init(signinKey);
    
            //完成 Mac 操作
            return mac.doFinal(data.getBytes());
        }
    
        public enum SignatureMethod {
            SHA1, MD5, SHA256;
        }
    
        public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
            String version = "2022-05-01";
            String resourceName = "userid/369088";
            String expirationTime = System.currentTimeMillis() / 1000 + 100 * 24 * 60 * 60 + "";
            String signatureMethod = SignatureMethod.SHA1.name().toLowerCase();
            String accessKey = "Li44KN9s9TrCirdGA+mkNv+mj4x1tld0oxjD2d3es6NrkjKj3PTQz18AREreEEMUAfYEEvQFsw4nWObiZItYfw==";
            String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey);
            System.out.println("Authorization:" + token);
        }
    }

得到Authorization类似如下

version=2022-05-01&res=userid%2F用户id&et=1714747782&method=sha1&sign=pcK%2BV3%2Fql%2BNncCw4w3txNC5nLGA%3D

新版onenet http,python,开发语言,http,网络协议,网络,postman

请求体:

选择form-data格式

product_id 产品id
device_name 设备名称/设备id
file 符合上传格式的图片或文本

新版onenet http,python,开发语言,http,网络协议,网络,postman

file上传到平台,可能会先云上传到postman上

三、上传成功

新版onenet http,python,开发语言,http,网络协议,网络,postman

fid每次上传都不一样,后面对文件进行操作是通过fid操作的

三、效果呈现

新版onenet http,python,开发语言,http,网络协议,网络,postman

对文件操作的注意:

都要先在请求头里面添加Authorization鉴权文章来源地址https://www.toymoban.com/news/detail-836977.html

到了这里,关于最新版onenet平台之HTTP文件管理图片上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最新版Android studio没有layout文件解决方案

    在 最新版的 Android studio中,创建一个空的活动发生了变化,旧版中可以直接选择empty activity,如  但在新版,empty activity的图标发生了变化 而在最新版的empty activity上我们创建项目后是没有layout文件的,下面的empty views activity才和旧版的empty activity相同。 这表明官方推荐使用C

    2024年02月04日
    浏览(48)
  • 23年最新版pycharm找不到conda可执行文件解决办法

     我下载的是2023年最新版本的pycharm,不知道怎么安装pycharm的看我这篇文章。新版的 pycharm 安装好了之后就会出现一个问题,就是在配置 conda 虚拟环境找不到 conda 的可执行文件,出现了以下问题。 遇到这个问题有两种解决办法。 按照以下步骤,找到condabin文件下面,conda.

    2024年02月11日
    浏览(51)
  • Spring Security6 最新版配置该怎么写,该如何实现动态权限管理

    Spring Security 在最近几个版本中配置的写法都有一些变化,很多常见的方法都废弃了,并且将在未来的 Spring Security7 中移除,因此又补充了一些新的内容,重新发一下,供各位使用 Spring Security 的小伙伴们参考。 接下来,我把从 Spring Security5.7 开始(对应 Spring Boot2.7 开始),各

    2024年02月12日
    浏览(44)
  • 最新版 苹果 IOS AppStore证书申请全流程 包括p12文件

    第一步 登陆开发者网站并进入证书管理页。 辅助工具网站地址:http://www.applicationloader.net/ 第二步 添加【Certificates】证书。在这里插入图片描述 第三步 进入添加页后,根据需求选择。 第四步 选择好环境之后,这里需要选择一个证书,这个证书需要苹果电脑生成。 第五步

    2024年02月09日
    浏览(46)
  • NIFI1.21.0最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050

    这里要提一嘴...看中文的,视频或者文档虽然学习会快一点,但是... 有的时候一些新的东西没有中文的,还是得看英文的...时间就了就好了,要不然解决不了问题 英文写的,凡是好东西,肯定是很详细的,并且就是为了让别人弄明白,做了大量解释,所以不用担心看不懂...  首先,把安装

    2024年02月06日
    浏览(66)
  • 安装部署最新版或者rancher2.7.0,然后导入K8S集群,管理集群

    centos系统请参考博客 ubuntu系统请参考博客 默认用户是admin 浏览器打开:https://IP:443 回车后就出现了如下图 利用刚才查到的密码登录 登录后直接修改密码,点击继续。 上图就是进入后的默认页面 不同版本调整中文的页面不一样,具体请根据自己的版本可以百度或者去官网查

    2024年02月08日
    浏览(46)
  • Python使用最新版pyinstaller将项目或程序打包成exe或者mac中的可执行文件

    pyinstaller 能够在 Windows、Linux、Mac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。 PyInstaller 支持 Python 2.7 和 Python 3.3+。可以在 Windows、Mac 和 Linux 上使用,但是并不是跨平台的,

    2024年02月08日
    浏览(50)
  • Python3.9使用最新版pyinstaller将项目或程序打包成exe或者mac中的可执行文件

    pyinstaller 能够在 Windows、Linux、Mac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。 PyInstaller 支持 Python 2.7 和 Python 3.3+。可以在 Windows、Mac 和 Linux 上使用,但是并不是跨平台的,

    2024年02月09日
    浏览(60)
  • NIFI1.21.0/NIFI1.22.0_2023-07-07最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050

    这里要提一嘴...看中文的,视频或者文档虽然学习会快一点,但是... 有的时候一些新的东西没有中文的,还是得看英文的...时间就了就好了,要不然解决不了问题 英文写的,凡是好东西,肯定是很详细的,并且就是为了让别人弄明白,做了大量解释,所以不用担心看不懂...  首先,把安装

    2024年02月15日
    浏览(50)
  • Inno Setup打包教程(将已经打包为exe文件的java项目程序,打包为可安装的Windows程序以及最新版inno中文汉化)

    提示:将已经打包为exe文件的java项目程序,打包为可安装的程序 文章目录 文章目录 一、Inno Setup是什么? 二、安装教程 1.下载安装 2.Inno Setup的简单使用和打包教程 3.Inno Setup的汉化 总结 Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,现在已经更新

    2024年02月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包