2010-07-21 4 views
2

J'ai essayé de télécharger un fichier (login.zip) en utilisant les bibliothèques ASIHTTPRequest de l'iPhone sur le serveur Apache intégré dans Mac OS X Snow Leopard. Mon code est:Upload file sur le serveur de l'iPhone en utilisant ASIHTTPRequest

NSString *urlAddress = [[[NSString alloc] initWithString:self.uploadField.text]autorelease]; 

NSURL *url = [NSURL URLWithString:urlAddress]; 

ASIFormDataRequest *request; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"login.zip"]; 

NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath] autorelease]; 

request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease]; 
[request setPostValue:@"login.zip" forKey:@"file"]; 
[request setData:data forKey:@"file"]; 
[request setUploadProgressDelegate:uploadProgress]; 
[request setShowAccurateProgress:YES]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

Le code php est:

<?php $target = "upload/"; 
$target = $target . basename($_FILES['uploaded']['name']) ; 
$ok=1; 

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded"; } 
else 
{ echo "Sorry, there was a problem uploading your file."; } ?> 

Je ne comprends pas pourquoi le fichier n'est pas le téléchargement. Si quelqu'un pouvait m'aider. Je suis resté sur cela pendant 5 jours d'affilée.

Merci à l'avance Nik

+0

Avez-vous obtenu comment résoudre cette erreur? – southpark

Répondre

0

Y at-il un décalage dans les noms de champs que vous utilisez?

On dirait que vous utilisez "fichier" sur l'iphone:

[request setPostValue:@"login.zip" forKey:@"file"]; 

mais 'téléchargé' sur le serveur:

Essayez de changer ceux-ci soient les mêmes.

+0

je les ai changés. ne fonctionne toujours pas. : – Nick

+0

Le fichier journal du serveur contient-il des erreurs dans le fichier journal du serveur? – JosephH

+0

Aucune erreur dans le journal des erreurs Le journal d'accès lit "152.96.15.90 - - [22/Jul/2010: 13: 31:57 +0200] "POST /test/upload.php HTTP/1.1" 200 561 "Je ne comprends pas et ça me rend fou. :(: (( – Nick

4

Essayez ceci:

[request setFile:filePath forKey:@"file"]; 

ou si vous pouvez mettre votre fichier zip dans NSData comme celui-ci

NSData *zipData = [[NSData alloc] initWithContentsOfFile:zipName]; 

et l'envoyer au serveur avec

[request setData:zip forKey:@"file"]; 

sur l'essai de serveur cette

<?php 




     $dir = "/var/www/your_directory/"; 

     $path = $dir . $_FILES['file']['name']; 

     //move_uploaded_file($_FILES['file']['tmp_name'], $path); 


    if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) { 
       //return ok! :) 
    } 
    else { 
     // return -> echo"There's been a problem uploading your file. Please try again"; 
    } 
?> 

dans $_FILES['file']['name'] le ['file'] doit être le même que forKey:@"file" dans votre demande