1

我已经成功设置了AWS移动集线器,现在可以使用我的 Facebook 凭据登录。基本上我只想使用 . 将图像上传到 S3 存储桶AWSMobileHubHelper。我知道在AWS移动集线器中的工作方式与常规 S3 上传不同。我们应该使用AWSUserFileManager而不是通常的设置AWScognito凭据 +S3bucket等。

我在他们的文档中找到了这个功能,但没有任何解释。我假设我可以传递我的图像,NSData关键是我的路径“public/aaa”。我运行代码一切似乎都很好。我什至没有抛出错误。但是当我转到我的 S3 存储桶时,图像不存在。

我的问题是:我应该作为密钥传递什么?绝对没有任何关于此的文档。

如果这不是怎么办呢?如何AWSUserFileManager工作?

func uploadWithData(data: NSData, forKey key: String) {
    let userFilemanager = AWSUserFileManager.defaultUserFileManager()
    let localContent = userFilemanager.localContentWithData(data, key: key)
    localContent.uploadWithPinOnCompletion(false, progressBlock: {(content: AWSLocalContent?, progress: NSProgress?) -> Void in
        // handle progress here
        }, completionHandler: {(content: AWSContent?, error: NSError?) -> Void in
            if let error = error {
                // handle error here
                print("Error occured in uploading: \(error)")
                return
            }
            // handle successful upload here
    })
}

谢谢。

4

1 回答 1

1

我找到了解决方案。基本上,这是正确的。

要将数据上传到公用文件夹,您只需使用上面的确切功能即可。而键=“公共/您的文件名”

但如果要上传到私有文件夹,则需要在声明 AWSUserFileManager 时添加 identityId,key 为 = "private/(identityId!)/yourFileName":

func uploadWithData(data: NSData, forKey key: String) {
    let userFilemanager = AWSUserFileManager.defaultUserFileManager().identityId!
    let localContent = userFilemanager.localContentWithData(data, key: key)
    localContent.uploadWithPinOnCompletion(false, progressBlock: {(content: AWSLocalContent?, progress: NSProgress?) -> Void in
        // handle progress here
        }, completionHandler: {(content: AWSContent?, error: NSError?) -> Void in
            if let error = error {
                // handle error here
                print("Error occured in uploading: \(error)")
                return
            }
            // handle successful upload here
    })
}
于 2016-09-05T12:09:28.507 回答