2011-08-10 2 views
-1

Je construis une application iPhone natif où j'ai la fonctionnalité de téléchargement de fichiers. Je dois vérifier et confirmer si le fichier a été téléchargé complètement. Comment puis-je atteindre cet objectif? Mon script côté serveur pour accepter les données du fichier et écrire/créer le fichier sur le serveur est construit en PHP.iPhone File Upload

Je suis en train de faire 2 choses: 1. Calculer la somme de contrôle du fichier de l'iPhone et l'envoyer à PHP script 2. Une fois le script PHP crée le fichier sur le serveur, recalcule la somme de contrôle et la comparer avec la valeur affichée.

Ma requête ici: J'utilise MD5 pour calculer la somme de contrôle mais les valeurs retournées par l'objectif c et le script PHP sont différentes?

Quelle est la meilleure façon de calculer la somme de contrôle sur iPhone? qui peut être adapté du côté serveur.

Veuillez nous suggérer. Merci

Répondre

1

Voici un extrait de code que j'utilise toujours pour md5sums:

- (NSString *) md5:(NSString *) input 
{ 
    const char *cStr = [input UTF8String]; 
    unsigned char digest[16]; 
    CC_MD5(cStr, strlen(cStr), digest); // This is the md5 call 

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; 

    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
     [output appendFormat:@"%02x", digest[i]]; 

    return output; 

} 

Découvrez ASIFormDataRequest ici http://allseeing-i.com/ASIHTTPRequest/How-to-use Il est un emballage très utile pour ce genre d'opération. Ci-dessous mon codesnippet pour télécharger un fichier et md5sum:

ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString: uploadUrl]] autorelease]; 
    [request setPostValue:md5sum forKey:@"md5sum"]; 
    [request setFile:[[NSURL URLWithString:filename] path] forKey:@"file"]; 
    [request startSynchronous]; 

Assurez-vous que vous vérifiez si Serverside tout est ok (md5sums correspondance et fichier a été téléchargé ok). Ensuite, évaluez la réponse de votre serveur avec [request responseString] et prenez les mesures appropriées.