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

一、准备工作

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

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

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

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

一、平台上操作

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

二、PostmanAPI上传

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

postman官网:Download Postman | Get Started for Free

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

请求方式:post

请求头:

Content-Typemultipart/form-data
AuthorizationAPI鉴权

最新版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

请求体:

选择form-data格式

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

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

三、上传成功

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

三、效果呈现

对文件操作的注意:

都要先在请求头里面添加Authorization鉴权

  • 38
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: OneNet平台是一个物联网平台,旨在帮助用户连接、管理和控制各类物联网设备。在OneNet平台上,可以方便地上传数据点,使用户可以实时监测和分析设备的数据。 首先,对于OneNet平台,用户需先注册一个账号并登录。在登录后,用户可以创建设备并绑定到OneNet平台上。每个设备在OneNet平台上都有一个唯一的设备ID,用户需要在设备上进行相应的配置,将设备与网络连接起来,以便可以进行数据上传。 一旦设备成功连接到OneNet平台,用户可以使用设备ID和设备的API Key来进行数据上传。用户可以通过使用OneNet提供的RESTful API进行数据上传。首先,用户需要构建一个JSON格式的数据包,包含要上传的数据点的信息。然后,用户可以使用HTTP POST请求,将数据包发送到OneNet平台的云端服务器。 在数据上传的过程中,用户需要注意数据格式的正确性和数据点的准确性。OneNet平台支持多种数据类型,如整数、浮点数、字符串等,用户在上传数据时需要将数据按照对应的类型进行转换和上传。此外,用户还可以为数据点设置一些其他的属性,如时间戳、数据单位等,以便更好地进行数据分析和可视化。 值得一提的是,OneNet平台还支持批量数据上传和历史数据查询。用户可以一次性上传多个数据点,减少数据上传的频率和流量消耗。同时,用户可以通过OneNet平台提供的API查询历史数据,了解设备的数据变化情况。 总之,通过OneNet平台上传数据点是一种方便快捷的方式,使用户可以实时监测和分析设备的数据,提高设备的管理和控制效率。 ### 回答2: OneNet平台是一个物联网云平台,可以方便地上传数据点。 首先,我们需要在OneNet平台上创建一个设备,并为设备生成一个唯一的设备ID和API Key。 然后,我们可以选择使用HTTP或者MQTT等协议来上传数据点。如果选择HTTP协议,我们可以通过发送HTTP请求将数据传输到OneNet平台。在HTTP请求中,我们需要将数据点的数值以及设备ID和API Key作为参数进行传递。OneNet平台会验证设备的身份,然后将数据点保存到数据库中。 另外,如果选择使用MQTT协议,我们可以通过建立一个MQTT连接来上传数据点。首先需要将设备ID和API Key配置到MQTT客户端中,然后通过MQTT发布者发布数据点的消息。OneNet平台会根据设备ID和API Key验证设备的身份,并将数据点保存到数据库中。 无论是使用HTTP还是MQTT协议,我们都可以在OneNet平台的设备管理界面中查看上传的数据点。通过设备管理界面,我们可以查看数据点的实时数值、历史数据和数据分析等信息,方便我们进行进一步的数据处理和分析。 总结来说,OneNet平台提供了多种方式上传数据点,方便我们通过物联网设备收集和管理数据,并进行进一步的数据分析和处理。 ### 回答3: OneNet是一个物联网平台,它提供了一种方式来上传数据点。在OneNet平台上,设备可以通过不同的方式将数据上传到云端。以下是一种常见的方法: 首先,设备需要与OneNet平台建立连接。可以通过使用平台提供的SDK或API来完成此操作。设备需要提供相应的认证信息,例如设备ID和API密钥,以便与平台进行身份验证。 一旦设备与OneNet平台建立了连接,它可以开始上传数据点。数据点可以是设备收集到的传感器数据或设备状态等信息。设备可以将数据点封装为JSON格式,然后使用API将其发送到OneNet平台OneNet平台接收到数据点后,会对其进行处理和存储。可以使用平台提供的设备管理功能,对上传的数据进行分组和分类。此外,OneNet平台还提供了数据分析和可视化功能,可以方便地查看和分析上传的数据点。 除此之外,OneNet平台还提供了一些其他功能来辅助数据上传,例如设备命令控制、设备升级和远程监控等。设备可以通过与OneNet平台的交互,实现更高级的物联网应用。 总结而言,OneNet平台提供了一种简单方便的方法来上传数据点。设备只需要建立连接并使用API发送JSON格式的数据点,即可将数据上传到云端,以便进行后续的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值