我正在使用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');
}
});
答案 0 :(得分:0)
如果仍然无法使用适用于JS的AWS开发工具包上传照片,请尝试使用另一种方法来创建Foreign Function Interface (FFI)并使用适用于iOS的AWS开发工具包。这就是我们团队中的开发人员如何在我们的Kony应用程序中获得S3上传的功能。
他使用AWSS3TransferManager
和AWSS3TransferManagerUploadRequest
类进行此操作。
答案 1 :(得分:0)
我确定FFI选项可以使用,但是我发现,一旦我将应用程序传输安全设置-允许任意加载-YES添加到Xcode的Info.plist中,这些上传就开始起作用。显然,这使用了HTTP标头,iOS不会自动允许这样做。我还必须将以下JSON添加到Kony Workspace中项目下的infoplist_configuration.json文件中: “ NSAppTransportSecurity”: { “ NSAllowsArbitraryLoads”:是 }