如何使用适用于JavaScript的aws-sdk将图像从iOS应用程序(由Kony内置)上传到AWS S3?

时间:2018-10-04 23:19:23

标签: ios amazon-web-services amazon-s3 kony

我正在使用Kony Visualizer(低代码编译器)来构建移动应用程序(构建iOS和Android本机应用程序),该应用程序可以将用户拍摄的图像发布到s3存储桶中。我目前正在将aws sdk用于js(易于导入到此低代码平台中),并且正在尝试使用s3.putObject调用来将图像向上推。我发现我可以从Android设备将图像的原始字节的base64字符串推送到s3存储,但是在iOS设备上却无法成功。我也将其发布在this link的Kony论坛上,并将我的代码粘贴到下面。另外,我知道到s3的连接正在工作,因为我将csv文件发布到代码另一部分的同一存储桶中。

AWS.config.update({
    accessKeyId: <accessKeyId>,
    secretAccessKey: <secretAccessKey>,
    region: <region>
});

var rawImg = this.view.Picture.rawBytes;
var b64img = kony.convertToBase64(rawImg);

var bucketImage = new AWS.S3();
var paramsImage = {
    Bucket: <bucket-name>,
    Key: "images/imageB64.jpg",
    ContentType: 'image/jpg',
    Body: b64img};

bucketImage.putObject(paramsImage, function(err,res){
    if (err) {
        alert(err);}
    else {
        alert('Success');
    }
});

2 个答案:

答案 0 :(得分:0)

如果仍然无法使用适用于JS的AWS开发工具包上传照片,请尝试使用另一种方法来创建Foreign Function Interface (FFI)并使用适用于iOS的AWS开发工具包。这就是我们团队中的开发人员如何在我们的Kony应用程序中获得S3上传的功能。

他使用AWSS3TransferManagerAWSS3TransferManagerUploadRequest类进行此操作。

Here's a code example in Swift

答案 1 :(得分:0)

我确定FFI选项可以使用,但是我发现,一旦我将应用程序传输安全设置-允许任意加载-YES添加到Xcode的Info.plist中,这些上传就开始起作用。显然,这使用了HTTP标头,iOS不会自动允许这样做。我还必须将以下JSON添加到Kony Workspace中项目下的infoplist_configuration.json文件中: “ NSAppTransportSecurity”:     {         “ NSAllowsArbitraryLoads”:是     }