ios ASIFormDataRequest сообщает о неверном файле из загрузки PHP - PullRequest
1 голос
/ 22 сентября 2011

Кто-нибудь, пожалуйста ... # $% ^ пожалуйста, посмотрите на это.дни, проходящие через отладчик, используя setData с представлением jpeg.установить файл, используя библиотеку ресурсов ios4, попробовать новый скрипт PHP, удалить файлы asiHTTPrequest и, черт побери, убедиться, что у меня есть новые.Все еще ничего ... Половина кода собрана из примеров здесь или где-либо еще в Интернете.

Цель здесь - просто выбрать фотографию с рулона камеры и загрузить ее, кажется довольно легко,У меня был другой PHP-скрипт, который отлично работал с рабочего стола, и я его получил здесь, потому что он намного более лаконичен и работает также и с рабочего стола.

, поэтому переопределение для завершения выбора изображения

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
UIImage *originalImage, *editedImage, *imageToSave;

// dealing with a still image
if(CFStringCompare((CFStringRef) mediaType, kUTTypeImage, 0) == kCFCompareEqualTo){

    editedImage = (UIImage *) [info objectForKey:UIImagePickerControllerEditedImage];

    originalImage = (UIImage*) [info objectForKey:UIImagePickerControllerOriginalImage];

    /*
    if(editedImage){
        imageToSave = editedImage;
    } else {
        imageToSave = originalImage;
    }
    */
    chosenImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];

    [[picker parentViewController] dismissModalViewControllerAnimated:YES];

    //_imageData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(originalImage, 0.0)];
    //_imageData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(chosenImage.image, 0.0)];

    UIImage *im = [info objectForKey:@"UIImagePickerControllerOriginalImage"] ;
    UIGraphicsBeginImageContext(CGSizeMake(320,480)); 
    [im drawInRect:CGRectMake(0, 0,320,480)];
    _resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext();
    _imageData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(_resizedImage, 0.0)];

    }
    [picker release];
}

затем метод загрузки.

-(void)uploadPhoto
{
//NSLog(@"image path inside uploadPhoto --> %@", _imagePath);
NSLog(@"uploadPhoto");


//NSLog(@"%@", imageData);

//_imageData = _imageData;

NSString *unescapedURL = @"http://dev.xxxx.com/upload.php";

NSString * escapedURL =
(NSString *)CFURLCreateStringByAddingPercentEscapes(
                                                    NULL,
                                                    (CFStringRef)unescapedURL,
                                                    NULL,
                                                    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                    kCFStringEncodingUTF8 );


NSURL *url = [NSURL URLWithString:unescapedURL];
//NSURL *url = [NSURL URLWithString:unescapedURL];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request setRequestMethod:@"POST"];
//[request setStringEncoding:NSUTF8StringEncoding];
//[request addPostValue:@"submit" forKey:@"Submit"];
//[request setPostValue:@"Submit" forKey:@"Submit"];
[request setData:_imageData withFileName:@"image4.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
//[request setFile:_imagePath forKey:@"photo"];
//[request setFile:_imagePath withFileName:@"image5.png" andContentType:@"image/png" forKey:@"photo"];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setTimeOutSeconds:500];
[request startAsynchronous];

NSError *error = nil;
NSString *theString = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error];
if( theString )
{
    NSLog(@"Text=%@", theString);
}
else 
{
    NSLog(@"Error = %@", error);
    NSString *localized = [error localizedDescription];
    NSString *localizedFail = [error localizedFailureReason] ? [error localizedFailureReason] : NSLocalizedString(@"not it", nil);
    NSLog(@"localized error--> %@", localized);
    NSLog(@"localizedFail--> %@", localizedFail);

}

[escapedURL release];

}

затем селекторы завершения / сбоя

-(void)requestFinished:(ASIFormDataRequest *)request
{
    NSLog(@"requestFinished");
    NSString *respondingString = [request responseString];
    NSLog(@"response string--> %@", respondingString);

    NSData *responseData = [request responseData];
    NSLog(@"%@", responseData);
}

-(void)requestFailed:(ASIFormDataRequest *)request
{
    NSLog(@"requestFailed");
    //NSError *error = [request error];
    //NSLog(@"%@", [error description]);
}

Помогите!Утопление ...

1 Ответ

0 голосов
/ 27 сентября 2011

Это была проблема с PHP.

move_uploaded_file($_FILES["file"]["tmp_name"]

была проблема.

если вы посмотрите на это

[request setData:_imageData withFileName:@"image4.jpg" andContentType:@"image/jpeg" forKey:@"photo"];

Это меняет POST, поэтому стандарт ...

move_uploaded_file($_FILES["file"]["tmp_name"]

должно быть

move_uploaded_file($_FILES["photo"]["tmp_name"]

добавление

error_reporting(E_ALL);
ini_set("display_errors", 1); 
print_r($_FILES);

чтобы PHP позволил мне увидеть ..

response string--> Array
(
    [photo] => Array
        (
            [name] => image4.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/phpCSXJgl
            [error] => 0
            [size] => 150854
        )

 )

в селекторе, определенном ...

[request setDidFinishSelector:@selector(requestFinished:)];

Отсюда я вернусь к PHP, который был до

move_uploaded_file($_FILES["file"]["tmp_name"]

и измените вызов setFile на

[request setData:_imageData withFileName:@"image4.jpg" andContentType:@"image/jpeg" forKey:@"file"];

все будет хорошо с миром, и я собираюсь получить немного еды. ура!

...