Pour résoudre ce problème, j'ai commencé avec l'exemple de code d'Amazon dans leur iOS SDK, trouvé here. Dans le zip SDK, le projet d'intérêt peut être trouvé au samples/S3_Uploader
.
Pour obtenir de ce projet d'échantillon à celui dans lequel l'image téléchargée est public, il vous suffit d'ajouter une ligne au bon endroit:
por.cannedACL = [S3CannedACL publicRead];
où por
est le S3PutObjectRequest
utilisé pour télécharger l'image.
code de mon projet pour le téléchargement ressemble à ceci (est presque identique au code de l'échantillon d'Amazon):
NSString *uuid = @""; // Generate a UUID however you like, or use something else to name your image.
UIImage *image; // This is the UIImage you'd like to upload.
// This URL is not used in the example, but it points to the file
// to be uploaded.
NSString *url = [NSString pathWithComponents:@[ @"https://s3.amazonaws.com/", AWS_PICTURE_BUCKET, uuid ]];
// Convert the image to JPEG data. Use UIImagePNGRepresentation for pngs
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
// Create the S3 Client.
AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:AWS_ACCESS_KEY_ID withSecretKey:AWS_SECRET_KEY];
@try {
// Create the picture bucket.
[s3 createBucket:[[S3CreateBucketRequest alloc] initWithName:AWS_PICTURE_BUCKET]];
// Upload image data. Remember to set the content type.
S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:uuid inBucket:AWS_PICTURE_BUCKET];
por.contentType = @"image/jpeg"; // use "image/png" here if you are uploading a png
por.cannedACL = [S3CannedACL publicRead];
por.data = imageData;
por.delegate = self; // Don't need this line if you don't care about hearing a response.
// Put the image data into the specified s3 bucket and object.
[s3 putObject:por];
}
@catch (AmazonClientException *exception) {
NSLog(@"exception");
}
AWS_ACCESS_KEY_ID
et AWS_SECRET_KEY
sont, bien sûr, vos informations d'identification AWS et AWS_PICTURE_BUCKET
est votre seau d'image.
J'espérais plus d'une solution de type CDN, que je pensais que S3 prévu ... Dans un sens, je télécharger une image, la rendre publique , et maintenant stocker une URL de l'image visible visible qui est visible tant que vous connaissez l'URL ... – belsokar
Sinon, puis-je en quelque sorte configurer un «compartiment» pour être accessible au public, de sorte que tout objet ajouté à ce compartiment est visible? Dans ce cas, je voudrais juste créer un seau intitulé "myprofileimages", et d'une façon ou d'une autre configurer une politique d'autorisations pour permettre à quiconque de ne voir que des éléments? – belsokar
http: // stackoverflow.com/questions/24349088/accès-refusé-en-téléchargement-fichier-de-ios-app-à-amazon-serveur-seau s'il vous plaît pouvez-vous vérifier cette question que je suis confronté à quelques problèmes –