2011-09-22 9 views
1

誰か教えてください...#$%^ご覧ください。 jpeg表現でsetDataを使用して、デバッガーを歩いている日数。 ios4アセットライブラリを使用してファイルを設定し、新しいPHPスクリプトを試し、asiHTTPrequestファイルを削除して、私が新しいものを持っていることを確かめてください。まだ何も...コードの半分は、ここの例やウェブ上の他の場所からまとめられています。ios ASIFormDataRequest PHPアップロードから無効なファイルを報告しています

ここでの目標は、単にカメラロールから写真を選択してアップロードすることです。かなり簡単です。私はデスクトップからうまく機能していた別の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]); 
} 

ヘルプ!溺れ...

答えて

0

PHPに問題がありました。

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

が問題でした。あなたはこの

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

を見れば

error_reporting(E_ALL); 
ini_set("display_errors", 1); 
print_r($_FILES); 
を追加
move_uploaded_file($_FILES["photo"]["tmp_name"] 

する...標準のよう

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

ニーズをPOSTを変更しています

PHPに私はここから何をやる

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

...私は...によって定義されたセレクタで

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

) 

を見ることができ、それは前にあった場所にPHPを戻すあります

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

[request setData:_imageData withFileName:@"image4.jpg" andContentType:@"image/jpeg" forKey:@"file"]; 
にsetFileコールを変更

すべてが世界でうまくいくと私はいくつかの食べ物を得るつもりです。乾杯!

関連する問題