php - 尽管上传成功,AFNetworking 2.0 POST + PHP 阻止失败

标签 php ios afnetworking-2

我的问题的描述实际上在问题标题中。我是网络技术的新手,所以这种行为对我来说有点引人注目。图片上传成功,为什么调用失败 block ?此外,我在 SoF 上搜索了我的问题的答案并应用了一些解决方案,但这个错误仍然出现。如果可能请帮忙。提前谢谢你。

目标 - C:

- (void)upload {

    NSString *fileName = [NSString stringWithFormat:@"%ld%c%c.jpg", (long)[[NSDate date] timeIntervalSince1970], arc4random_uniform(26) + 'a', arc4random_uniform(26) + 'a'];
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
    NSData *data = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:imagePath]);

    NSString *URLString = @"http://myServer/myAppFolder";

    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager manager] initWithBaseURL:[NSURL URLWithString:URLString]];

    AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
    [manager setResponseSerializer:responseSerializer];
    [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];

    AFHTTPRequestOperation *operation = [manager POST:@"upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData:data name:@"uploadedfile" fileName:fileName mimeType:@"image/jpeg"];
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Failure / %@, /  %@", error, operation.responseString); //error comes from here
    }];

    [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
        NSLog(@"uploading...");
    }];
}

上传.php:

<?php
$filename="uploaded";
$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name'])." has been uploaded";
} else {
    echo "There was an error uploading the file, please try again!";
}
?>;

我收到这个错误:

Failure / Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x8a633e0 {NSDebugDescription=Invalid value around character 0.}, /  The file 1389046572lb.jpg has been uploaded;

最佳答案

问题似乎出在您正在使用 AFJSONResponseSerializer 序列化 PHP 上传脚本的响应。

并且您的 PHP 没有返回 JSON - 因此序列化程序会抛出错误。

您可以修改 PHP 脚本,使其返回 JSON 格式的结果。或者您可以使用不同类型的序列化程序。

根据 this forum解决方案是使用 [AFResponseSerializer serializer] - 我不确定它是否存在。尝试基本的 AFHTTPResponseSerializer

关于php - 尽管上传成功,AFNetworking 2.0 POST + PHP 阻止失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20960529/

相关文章:

php - SHA 函数问题

ios - 在框架提供的 View Controller 上重写 didSelectRowAtIndexPath?

json - 使用 Facebook iOS SDK 时 PhoneGap 和 SBJSON 重复冲突

ios - AFNetworking 2.0 中的批量 GET 请求

ios - AFNetworking 2.0 Domain=AFNetworkingErrorDomain Code=-1011 "请求失败 : internal server error (500)

php - 创建一个 'People who viewed this also viewed' 列表

php - 在代码中使用 Julian Dates 有好处吗?

objective-c - IOS 5 SetNeedsDisplayInRect 导致 FullScreen-Invalidity

ios - AFNetworking错误-'无效的JSON写入类型(NSConcreteData)'-上传音频文件时

php - 表单发布时如何获取复选框元素中未选中复选框的值?