我正在构建一个本机iPhone应用程序,我有文件上传功能。我需要验证并确认文件是否已完全上传。我怎样才能做到这一点?我的服务器端脚本接受文件数据并在服务器上编写/创建文件是用PHP构建的。
所以我想做两件事: 1.从iPhone计算文件的校验和,并将其发布到PHP脚本 2. PHP脚本在服务器上创建文件后,重新计算校验和并将其与发布的值进行比较。
我的查询: 我使用MD5来计算校验和,但是目标c和PHP脚本返回的值是不同的?
哪种方法可以在iPhone上计算校验和?可以在服务器端匹配。
请建议。感谢
答案 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]
评估服务器的响应并采取相应措施。