开发者社区 问答 正文

iOS oss上传文件成功,但是在后台不显示,是什么原因,上传代码如下:

NSString *endpoint = @"http://oss-cn-hangzhou.aliyuncs.com";

id credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:kAccessKey secretKey:kSecretKey];

OSSClientConfiguration * conf = [OSSClientConfiguration new]; conf.maxRetryCount = 3; // 网络请求遇到异常失败后的重试次数 conf.timeoutIntervalForRequest = 30; // 网络请求的超时时间 conf.timeoutIntervalForResource = 24 * 60 * 60; // 允许资源传输的最长时间 OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential clientConfiguration:conf]; OSSPutObjectRequest *put = [OSSPutObjectRequest new]; put.bucketName = kBucketName; put.objectKey = [NSString stringWithFormat:@"USERS/USER1/%@/setting.txt", self.frameID]; put.uploadingFileURL = [NSURL fileURLWithPath:filePath];; // optional fields put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) { NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend); }; OSSTask *putTask = [client putObject:put]; [putTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) { if (!task.error) { GFFLog(@"上传成功"); }else{ GFFLog(@"上传失败:%@", task.error); } return nil; }];

展开
收起
沙隆巴斯79 2019-09-03 17:45:10 1296 分享 版权
阿里云 AI 助理回答

这段代码是使用阿里云对象存储服务(OSS)的iOS SDK进行文件上传操作的示例。下面是对代码中关键部分的解释,帮助你更好地理解其功能和配置:

  1. 设置Endpoint: endpoint 指定了阿里云OSS服务的访问地址,这里是杭州区域的内网地址。根据实际需求,你可以选择其他地区的Endpoint。

  2. 认证信息: 通过OSSPlainTextAKSKPairCredentialProvider类初始化认证信息,需要提供AccessKey ID(kAccessKey)和AccessKey Secret(kSecretKey)。这是访问阿里云服务时用于身份验证的一对密钥。

  3. 客户端配置:

    • maxRetryCount: 设置网络请求失败后的最大重试次数为3次。
    • timeoutIntervalForRequest: 单次网络请求的超时时间为30秒。
    • timeoutIntervalForResource: 允许整个资源传输过程的最长时间,这里设置为24小时,适用于大文件上传。
  4. 创建OSSClient实例: 使用指定的Endpoint和认证信息配置创建OSS客户端对象。

  5. 准备上传请求:

    • put.bucketName: 指定上传文件到的Bucket名称。
    • put.objectKey: 定义了上传文件在Bucket中的路径和文件名,这里格式化字符串包含了一个自定义的frameID。
    • put.uploadingFileURL: 指定要上传的本地文件路径。
  6. 上传进度回调: put.uploadProgress block会在上传过程中被调用,用来监控上传进度。

  7. 执行上传任务:

    • 使用client.putObject:put发起上传请求,并将返回的OSSTask继续执行一个block来处理上传结果。
    • 在block中,如果task.error为nil,表示上传成功;否则,打印错误信息并标记上传失败。

确保在使用这段代码之前,已经正确设置了AccessKey和SecretKey,并且iOS应用有网络权限以及对指定Bucket有足够的访问权限。此外,考虑到安全性,生产环境中不建议直接在代码中硬编码AccessKey和SecretKey,可以考虑使用更安全的凭证管理方式,如RAM用户或STS临时凭证。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答