iOS版上传数据到阿里后台(AliyunOSSiOS)

前言

我们用的阿里的存储服务,在我们上传头像的时候。伟大的后台告诉我,前台应该直接向阿里传递数据,这样的路径是:iOS端—>阿里。以往我们的传递路径都是:iOS端—>后台—>阿里。所以我刚刚经过抗日战争的喜悦,又要奔向朝鲜的战场。但是我去网上查了一下,关于iOS端直接上传数据到阿里的知识真的很少,查了好久也是没有结果。最后不得不向阿里技术人员请求支援。最终,胜利了。在此,把我的辛苦路写出来,为了大家以后的少走弯路。不用谢我,我是LF。


正文

首先,给大家阿里sdk的github地址,在这里你可以下载他们的idk,看一下他们的介绍。
我的Demo的地址,大家可以看一下,配置好自己的阿里参数可以直接上传测试。
然后,开始代码(以上传一个相册图片为例)
想上传到阿里,首先要有对应的阿里的账号参数,填写到这里

NSString * const AccessKey = @"";
NSString * const SecretKey = @"";

OSSClient是OSS服务的iOS客户端,它为调用者提供了一系列的方法,用于和OSS服务进行交互。一般来说,全局内只需要保持一个OSSClient,用来调用各种操作。
上面这一句是阿里的说法,那我们就听从人家的建议吧:

@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
{
    OSSClient * client;
}

用明文AK/SK实现的加签器(官方建议只在测试模式时使用)

NSString *endpoint = @"自己的参数";//比如http://ios.ali.com
id<OSSCredentialProvider> credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:AccessKey                                                                                                     secretKey:SecretKey];
client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];
    OSSPutObjectRequest * put = [OSSPutObjectRequest new];

Bucket名称, Object名称

put.bucketName = @"自己的数据";
put.objectKey = @"自己的数据";

上传数据,有两种方式:
1.data上传

put.uploadingData = self.imageData;//自己的NSData数据

2.上传路径

put.uploadingFileURL = [NSURL fileURLWithPath:fullPath];

当然,上传的时候你也可以看一看你的上传进度,还有一些参数配置(这一步不是必须的):

put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
        NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
    };

所有调用api的操作,都会立即获得一个OSSTask。这是官方的说法。这一步是最重要的一步,成不成功就看他了。

OSSTask * putTask = [client putObject:put];

    [putTask continueWithBlock:^id(OSSTask *task) {
        task = [client presignPublicURLWithBucketName:@"同上面的bucketName"
                                        withObjectKey:同上];
        NSLog(@"objectKey: %@", put.objectKey);
        if (!task.error) {
            OSSPutObjectResult * result = task.result;
            NSLog(@"upload object success!");
            NSLog(@"Result - requestId: %@",
                  result.requestId);
        } else {
            NSLog(@"upload object failed, error: %@" , task.error);
            OSSPutObjectResult * result = task.result;
            NSLog(@"requestId: %@",
                  result.requestId);
        }
        return nil;
    }];

好了,这就是全部的上传的代码。关于最后一步我要说一下,官方给的代码是:

OSSTask * putTask = [client putObject:put];

[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];

没有这一句代码:

task = [client presignPublicURLWithBucketName:@"同上面的bucketName"
                                        withObjectKey:同上];

你自己可以试一下,反正我的按照官方说的那种不行。
还有一个注意点,xcode7的如果用的http请求,别忘了设置ATS


结束

最后结束,我是程序猿,我为自己代言!!!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32空气质量传感器可以通过串口或者I2C接口与STM32微控制器连接。在STM32上编写程序,读取传感器数据并将其上传阿里云平台。具体步骤如下: 1. 配置STM32的串口或者I2C接口,使其能够与空气质量传感器通信。 2. 编写程序,读取传感器数据,并将其转换为可上传的格式,例如JSON格式。 3. 配置阿里云平台,创建一个设备,获取设备的Access Key和Secret Key。 4. 在STM32上编写程序,使用MQTT协议将传感器数据上传阿里云平台。 5. 在阿里云平台上创建一个数据流,将上传数据流转换为可视化的图表或者其他形式的数据展示。 需要注意的是,上传数据阿里云平台需要保证数据的安全性和可靠性,可以使用加密算法和数据校验等技术来保障数据的完整性和安全性。同时,还需要考虑网络连接的稳定性和数据传输的效率,以确保数据能够及时、准确地上传阿里云平台。 ### 回答2: 随着空气污染越来越严重,监测和控制空气质量已成为重要的任务。为了实现更加高效和智能的空气质量监测,不少人开始选择将现代电子技术与互联网相结合。其中,stm32芯片在智能化环保设备中较为常用。本篇文章将说明如何使用stm32将空气质量数据上传阿里云平台。 首先,需要选取适合上传数据的传感器。空气质量监测中常用的传感器有气体传感器、PM2.5传感器、甲醛传感器等。选择传感器需要根据实际需要进行评估。在本篇文章中,我们选择一个DSM501A粉尘传感器来检测空气中的粉尘浓度。这个传感器可以通过UART接口直接连接到stm32芯片上,读取到的数据就可以上传阿里云平台了。 为了使用stm32芯片来上传数据,我们需要选择一个适合的开发环境。本篇文章使用的是STM32CubeIDE集成开发环境。在此环境下,我们可以通过使用HAL库来编写stm32的代码。此外,还需要在阿里云平台上创建一个物联网实例,并在该实例下创建设备及对应的Topic和规则。 接下来,我们需要编写STM32 HAL库中的代码。我们首先需要初始化传感器,然后读取到传感器的数据。读取到的数据需要进行处理,之后通过阿里云的MQTT协议将数据上传阿里云平台上。为了将数据上传阿里云平台上,我们需要调用MQTT客户端的API。其中,我们需要指定一些上传数据时需要用到的参数,例如物联网设备的身份验证信息等。当上传数据阿里云平台上之后,我们就可以通过阿里云平台提供的可视化工具进行监测和控制。 总的来说,STM32和阿里云平台的结合在智能化环保控制方面有许多优点。例如,上传数据的实时性高,处理速度快,数据可靠性强,同时可实现实时监测和远程控制等功能。因此,将STM32芯片与阿里云平台结合起来,将是未来智慧城市环保的重要方向。 ### 回答3: 随着现代工业和交通的发展,空气质量越来越成为人们关注的重要问题。为了提高人们对环境的关注和保护,需要对空气质量进行监测和分析。而STM32片上系统为如此应用提供了一种理想的选择,可以将空气质量数据上传阿里云平台进行分析和展示。 设计之初需考虑以下几个方面: 一、传感器模块及驱动程序 STM32芯片内部集成了众多外设,如定时器、串口、I2C等,能够实现对各种传感器模块的数据采集。这里选择适合空气质量监测的传感器模块,例如PM2.5传感器、甲醛传感器等。为了方便操作,要编写相关的驱动程序来保证传感器与STM32的正常工作。 二、数据处理及存储程序 通过传感器模块采集到的数据需要进行一定的处理,例如滤波、数据平滑等,以保证数据的准确性和稳定性。为了保证数据存储,可以将其存储到SD卡或者存储器中。 三、网络模块及阿里云SDK 为了将数据上传阿里云平台,需要选择一种网络模块进行数据传输。例如,可以选择WIFI模块、以太网模块或者移动通信模块等。同时,需要在STM32系统中集成阿里云SDK,用于上传数据、认证身份和接收云端命令等。 四、系统整合 最后,需要将以上各个部分整合起来,包括传感器模块、处理及存储模块、网络模块、阿里云SDK等,并在这些模块之间建立良好的通信方式,确保系统整体工作正常,数据可以上传阿里云平台进行分析和展示。 总之,使用STM32空气质量上传数据阿里云设计需要考虑许多因素,包括传感器模块的选择和驱动程序编写、数据处理及存储程序、网络模块、阿里云SDK等。通过以上设计,可以实现对环境的监测和保护,促进人们的环保意识和保护环境的行动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值