簡體   English   中英

使用AFNetworking從ios中的照片庫上傳圖像?

[英]Image upload from photo library in ios using AFNetworking?

我正在開發一個用戶需要在其中注冊的應用程序。 有一個圖像上傳選項,用戶可以在其中從iPhone的照片庫中選擇圖像。 我已使用AFNetworking進行上傳。 但是分段上傳中存在錯誤,此問題附帶錯誤日志。 如果有人知道解決方案,請幫助我

提前致謝。

iOS部分

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissViewControllerAnimated:YES completion:nil];
    UIImage * image = info [UIImagePickerControllerOriginalImage];

    NSString *fileName = [NSString stringWithFormat:@"%ld%c%c.jpg", (long)[[NSDate date] timeIntervalSince1970], arc4random_uniform(26) + 'a', arc4random_uniform(26) + 'a'];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSData *data = UIImageJPEGRepresentation(image, 0.5);
   // NSLog(@"DATA %@",data);
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    NSString *key1 = @"123";
    NSString *key2 = @"asdf";


     [manager POST:@"http://192.168.0.100/fileupload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData:data
                                    name:@"uploadedfile"
                                fileName:fileName mimeType:@"image/png"];

        [formData appendPartWithFormData:[key1 dataUsingEncoding:NSUTF8StringEncoding]
                                    name:@"email"];

        [formData appendPartWithFormData:[key2 dataUsingEncoding:NSUTF8StringEncoding]
                                    name:@"website"];

        // etc.
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSError *error = nil;
        NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
        if (error) {
            NSLog(@"Error serializing %@", error);
        }
        NSLog(@"Dictionary %@", JSON);    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
}

PHP的部分

<?php
    $uploaddir = 'uploads/';
    $file = basename($_FILES['uploadedfile']['name']);
    $uploadfile = $uploaddir . $file;

    echo "file=".$file; //is empty, but shouldn't

    if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $uploadfile)) {
        echo $file;
    }
    else {
        echo "error";
    }
    ?>

錯誤

  imageupload[23252:237255] Error serializing Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Something looked like a 'false' but wasn't around character 0.) UserInfo=0x7fee21fe1590 {NSDebugDescription=Something looked like a 'false' but wasn't around character 0.}

我快速查看了您的代碼並發現

NSData * data = UIImageJPEGRepresentation(image,0.5);

並且您將mimeType指定為“ image / png”,我認為這可能會導致錯誤。

嘗試這個:

-(void) uploadImage {

NSString *imagePath = [[NSUserDefaults standardUserDefaults] objectForKey:@"userimage"];
NSString * urlString = [stagingURL stringByReplacingOccurrencesOfString:@"user/" withString:@""];
NSString * uploadURL = @"Your URL where image to be uploaded";
NSLog(@"uploadImageURL: %@", uploadURL);
NSData *imageData = UIImageJPEGRepresentation([UIImage imageWithData:[NSData dataWithContentsOfFile:imagePath]], 0.5);

NSString *queryStringss = [NSString stringWithFormat:@"%@",uploadURL];
queryStringss = [queryStringss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];

[manager POST:queryStringss parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
     [formData appendPartWithFileData:imageData name:@"file" fileName:@"file" mimeType:@"image/jpeg"];
 }
      success:^(AFHTTPRequestOperation *operation, id responseObject) {

     NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
     [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
 }
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
     NSLog(@"Error: %@ ***** %@", operation.responseString, error);
 }];}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM