【问题标题】:NSData has size but image is not reaching server returning emptyNSData 有大小,但图像未到达服务器返回空
【发布时间】:2014-02-25 13:25:37
【问题描述】:

我正在使用 AFNetworking 2.0 上传单个图像正在存储从 UIImgePhotoLibrary 中选择的图像并将其转换为 NSData 我可以看到 NSData 在我尝试上传它时保存了一些数据返回没有图像到达服务器并且它没有甚至花时间在一秒钟内返回错误。在过去的几天里,我对这个问题感到沮丧,我不知道究竟是在哪里记录的?

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{


     UIImage *image =[info objectForKey:UIImagePickerControllerOriginalImage];
     NSData *imageData = UIImageJPEGRepresentation(image, 1.0);

    AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer];
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];


    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer = requestSerializer;
    [requestSerializer setValue:@"image/jpg" forHTTPHeaderField:@"Content-Type"];
    [requestSerializer setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[imageData length]] forHTTPHeaderField:@"CONTENT_LENGTH"];

    [manager POST:@"http://xxxxx.com/appphotos/fileupload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData:imageData name:@"image" fileName:@"image/jpeg" mimeType:@"image/jpeg"];
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success: %@", operation.responseString);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", [error debugDescription]);
        NSLog(@"Error: %@", [error localizedDescription]);
        NSLog(@"response :%@",operation.responseString);
    }];



    [picker dismissViewControllerAnimated:YES completion:Nil];

}

如果我在任何地方犯了错误,任何人都可以帮助或请告诉我。提前谢谢

【问题讨论】:

  • 使用 Charles Proxy 等网络分析器查看实际发送的内容以及服务器响应。
  • @Zaph 我分析过它显示图片内容
  • 您使用了网络分析仪,您的回复并未说明您分析的方式/内容。所以服务器不喜欢 POST 的某些方面,您需要仔细阅读服务器上传文档并检查发送的内容是否完全符合这些要求。

标签: ios afnetworking nsdata image-uploading


【解决方案1】:

我创建了一个将照片上传到服务器的应用程序。我只有在包含以下代码后才能使其工作,但这可能因服务器而异,因此您可能必须按照 Zaph 的建议执行并阅读您的服务器文档。话虽如此,试试代码,也许你会走运:)

NSMutableString *myString = [[NSMutableString alloc] initWithString:@"http://www.yourdomain.com/yourServerMethodHere/"];
    //[myString appendString:@"anyAdditionalURLpartHere"];
    NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:myString]
                                                                cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                            timeoutInterval:60];
    [urlRequest setHTTPMethod:@"POST"];
    NSString *boundary = @"----WebKitFormBoundaryQkZe6RUJZ2xbzXLB";
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [urlRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Disposition: form-data; name=\"YOURserverVariableStoringTheIncomingData\" filename=\"image001.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Type: image/jpg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:photoData]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [urlRequest setHTTPBody:body];

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 2020-04-30
    • 2017-08-19
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多