iPhone文件上传

时间:2011-08-10 12:29:51

标签: php iphone file-upload md5

我正在构建一个本机iPhone应用程序,我有文件上传功能。我需要验证并确认文件是否已完全上传。我怎样才能做到这一点?我的服务器端脚本接受文件数据并在服务器上编写/创建文件是用PHP构建的。

所以我想做两件事: 1.从iPhone计算文件的校验和,并将其发布到PHP脚本 2. PHP脚本在服务器上创建文件后,重新计算校验和并将其与发布的值进行比较。

我的查询: 我使用MD5来计算校验和,但是目标c和PHP脚本返回的值是不同的?

哪种方法可以在iPhone上计算校验和?可以在服务器端匹配。

请建议。感谢

1 个答案:

答案 0 :(得分:1)

这是我一直用于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;

}

在此处查看ASIFormDataRequest http://allseeing-i.com/ASIHTTPRequest/How-to-use 对于这种操作来说,它是一个非常有用的包装器。在我的代码邮箱下方,用于上传文件和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];

如果一切正常,请确保检查服务器端(md5sums匹配并且文件上传正常)。然后使用[request responseString]评估服务器的响应并采取相应措施。