Загрузка фото с помощью ASIHTTPRequest - PullRequest
0 голосов
/ 17 января 2012

Я использую ASIHTTPRequest для загрузки фото с помощью PHP.Доказано, что сторона PHP работает (я использую ее для Android), и я пытаюсь заставить компонент iOS работать.

Вот моя загрузка:

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum=";
    myurl = [myurl stringByAppendingFormat: casenumber];
    NSString *fixedURL = [myurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSString stringWithFormat:@"%@",fixedURL];

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

    NSData *imageData = UIImageJPEGRepresentation(image1.image, 90);
    [request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"file"];

    [request setCompletionBlock:^{
        NSString *responseString = [request responseString];
        NSLog(@"Response: %@", responseString);
    }];
    [request setFailedBlock:^{
        NSError *error = [request error];
        NSLog(@"Error: %@", error.localizedDescription);
    }];

    [request startAsynchronous];

Я нашел это в интернете, и когда я запускаю его, происходит сбой с ошибкой 2012-01-17 10:52:16.939 MyApp[30373:707] Error: NSInvalidArgumentException

Из многих документов и примеров, которые я нашел в Интернете, это должно работать, но это не так, каквы можете видеть с исключением.Любая помощь в сглаживании изломов?Если вам нужна какая-либо другая информация, я с удовольствием выложу ее.

1 Ответ

0 голосов
/ 18 января 2012

Может показаться, что при создании NSURL произошла пара ошибок. Во-первых, нужно экранировать только параметры, а не весь URL, поэтому

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum=";
myurl = [myurl stringByAppendingFormat: casenumber];
NSString *fixedURL = [myurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

должно быть

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum=";
NSString *escapedCasenumber = [casenumber stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
myurl = [myurl stringByAppendingFormat:escapedCasenumber];

Во-вторых, вы пытаетесь присвоить NSString для NSURL, поэтому

NSURL *url = [NSString stringWithFormat:@"%@",fixedURL];

должно быть

NSURL *url = [NSURL urlWithString:myurl];

Наконец, второй аргумент, передаваемый UIImageJPEGRepresentation, должен иметь значение с плавающей запятой в диапазоне от 0,0 до 1,0, поэтому я предполагаю

NSData *imageData = UIImageJPEGRepresentation(image1.image, 90);

должно быть

NSData *imageData = UIImageJPEGRepresentation(image1.image, 0.9);

Если после этих изменений он все еще не работает, выполните действия, предложенные JosephH, и используйте отладчик, чтобы точно определить, какая строка вызывает исключение

...