У новичка возникли проблемы с загрузкой файла с помощью ASIHTTPRequest - PullRequest
2 голосов
/ 16 марта 2011

Я мог бы действительно, действительно, действительно использовать некоторую помощь. Я повсюду просматривал подробную документацию (для манекенов) об использовании ASIFormDataRequest для загрузки фотографий. Может ли кто-нибудь через меня пройти линию жизни здесь?

Вот то, что (в релевантных частях) у меня есть, хотя я знаю, что я могу быть далеко.

Camera.h

#import <UIKit/UIKit.h>
@class ASIFormDataRequest; 

...

Camera.m

#import "Camera.h"
#import "ASIHTTPRequest.h"
#import "ASIFormDataRequest.h"

...

- (void)uploadImage:(NSData *)imageData filename:(NSString *)filename{
NSURL *url = [NSURL URLWithString:@"http://moosesightings.com/test.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
// Upload a file on disk
[request setData:imageData withFileName:filename andContentType:@"image/jpeg" forKey:@"userfile"];
[request setDelegate:self];
[request startAsynchronous];
}

...

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissModalViewControllerAnimated:YES];
[picker.view removeFromSuperview];
// Access the uncropped image from info dictionary
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSString *imageName = @"uploaded.jpg";

// Save image
//UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
[self uploadImage:UIImageJPEGRepresentation(imageView.image, 1.0) filename:imageName];

captionControls.hidden = NO;
[textView becomeFirstResponder];

[picker release];
}

Вот сценарий, который я получил.

$dir_dest = 'uploads/';
ob_start();
print_r($_FILES);
$test = ob_get_contents();
ob_end_clean();
$db->insert('connecttest', array('ts'=>date('Y-m-d H:i:s'), 'tempfield'=>$test))->execute();

Вот результат, который я получаю

Array
(
    [(null)] => Array
        (
            [name] => (null)
            [type] => (null)
            [tmp_name] => C:\Windows\Temp\phpCFF0.tmp
            [error] => 0
            [size] => 0
        )

)

Пожалуйста, помогите: (

1 Ответ

7 голосов
/ 16 марта 2011

Я столкнулся с подобной проблемой, я изменил размер изображения, используя

UIImage *im = [info objectForKey:@"UIImagePickerControllerOriginalImage"] ;
UIGraphicsBeginImageContext(CGSizeMake(320,480)); 
[im drawInRect:CGRectMake(0, 0,320,480)];
newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();
NSData* imageData=UIImageJPEGRepresentation(newImage, 0.5); 

, и он начал работать, высота и ширина захваченного изображения будет больше, чем 2000x2000, поэтому уменьшите его и попробуйте.

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

и это скрипт php.

$filename="uploaded";
$target_path = "uploads/";
$target_path = $target_path .$filename.".jpg"; 
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
echo "uploaded an image";
} else{
    echo "There was an error uploading the file, please try again!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...