Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone AFAmazonS3客户端问题上传_Iphone_Ios_Afnetworking - Fatal编程技术网

Iphone AFAmazonS3客户端问题上传

Iphone AFAmazonS3客户端问题上传,iphone,ios,afnetworking,Iphone,Ios,Afnetworking,我正在使用尝试将文件上载到S3,我遇到了麻烦。我在模拟器中运行时收到错误的URL响应,在设备上运行时收到405响应。当收到405响应时,日志状态为100%的文件已上载。我不确定我做的是否正确。这是我的代码: AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID

我正在使用尝试将文件上载到S3,我遇到了麻烦。我在模拟器中运行时收到错误的URL响应,在设备上运行时收到405响应。当收到405响应时,日志状态为100%的文件已上载。我不确定我做的是否正确。这是我的代码:

    AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID
                                                                        secret:kSecret];
    s3Client.bucket = kBucket;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths objectAtIndex:0];
    NSString *path = [documents stringByAppendingPathComponent:@"test.jpeg"];

    [s3Client postObjectWithFile:path parameters:nil progress:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
        NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
    } success:^(id responseObject) {
        NSLog(@"Upload Complete");
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
只是猜测,但是

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:@"kAccessKeyID"
                                                                    secret:@"kSecret"];
kAccessKeyId/kSecret是常量,是吗?通常将常量定义为

#define kAccessKeyId @"myKeyId"
所以你不想在它们周围添加额外的引号。我真的很惊讶编译器会允许它。你的线路应该更像

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID
                                                                    secret:kSecret];
其他一些常规调试:

  • 注销您尝试访问的路径,并确保您有适当数量的斜杠
  • 405错误通常表示您用于访问特定URL的方法无效。你真的可以发帖吗/你有发帖的权限吗?这又回到了我的观点:当您不需要双引号时,您可能意外地添加了双引号,因此无法正确访问S3存储
很抱歉,在stackoverflow中编辑了该内容,因此我没有公开凭据,也没有意识到错误!就权限而言,自设置bucket以来,我没有更改任何内容,也没有创建bucket策略。我是否需要更改任何内容,或者默认设置是否足够?将其从POST更改为PUT,现在可以使用了。我会接受你的回答。太棒了。是的,我想可能是一个帖子的问题。谢谢你的接受。