2009-12-21 6 views
10

J'ai trouvé quelques extraits de ligne pour télécharger l'image de l'iphone dans le dossier du serveur, son montrant à utiliser le script côté serveur par exemple. utiliser php à côté serveurtélécharger l'image de l'iphone dans le dossier du serveur

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

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
     echo "Uploaded!"; 
}else{ 
    echo "Not Uploaded!"; 
} 
/> 

est-il possibilités de télécharger l'image directement dans le dossier du serveur sans le code ci-dessus,

Disons que je veux télécharger dans http://111.22.333.44/mysite/pics/ w/o tout script côté serveur, si peut comment cela peut se faire

grâce

Répondre

18
/* 
    turning the image into a NSData object 
    getting the image back out of the UIImageView 
    setting the quality to 90 
*/ 
NSData *imageData = UIImageJPEGRepresentation(image.image, 90); 
// setting up the URL to post to 
NSString *urlString = @"http://iphone.zcentric.com/test-upload.php"; 

// setting up the request object now 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 

/* 
    add some header info now 
    we always need a boundary when we post a file 
    also we need to set the content type 

    You might want to generate a random boundary.. this is just the same 
    as my output from wireshark on a valid html post 
*/ 
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

/* 
    now lets create the body of the post 
*/ 
NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[NSData dataWithData:imageData]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
// setting the body of the post to the reqeust 
[request setHTTPBody:body]; 

// now lets make the connection to the web 
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

NSLog(returnString); 

ce code sera utile pour vous ....

+0

J'ai dû enlever la ligne avec l'application/octet- flux pour le faire fonctionner avec attachment_fu. Des idées pourquoi? –

+0

C'était génial. A travaillé pour moi à la première fois. Merci parvind :) – Prerna

+0

Soyez conscient de la taille du fichier téléchargé. Vous créez la requête avec le contenu du fichier entier en mémoire et ensuite l'envoyer ... si le fichier est trop gros (ou si vous téléchargez plusieurs fichiers simultanément), vous avez probablement des problèmes de consommation de mémoire – JakubKnejzlik

0

Si vous configurez votre serveur Web pour permettre la méthode PUT vous pouvez le faire. 99% des serveurs Web n'autorisent que les méthodes GET et POST.

N'ayant jamais fait cela, je ne peux pas vous donner beaucoup d'aide. Voici une page que je suis de google en parler:

http://www.w3.org/QA/2008/10/understanding-http-put.html