2011-08-10 51 views
-1

我正在構建一個本機iPhone應用程序,我有文件上傳功能。我需要驗證並確認文件是否完全上傳。我怎樣才能做到這一點?我的服務器端腳本接受文件數據並在服務器上寫入/創建文件是使用PHP編寫的。iPhone文件上傳

所以我試圖做兩件事情: 1.計算從iPhone上的文件的校驗和其張貼到PHP腳本 2.一旦PHP腳本創建服務器上的文件,重新計算校驗和進行比較與發佈的價值。

我的查詢在這裏: 我使用MD5來計算校驗和,但是由目標c和PHP腳本返回的值是不同的?

這是我能計算iPhone上校驗和的最好方法嗎?可以在服務器端進行匹配。

請建議。由於

回答

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 它是這種操作的一個非常有用的包裝。下面我爲codesnippet上傳文件和的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]; 

確保您檢查服務器端的一切是否ok(MD5SUMS匹配和文件上傳OK)。然後使用[request responseString]評估服務器的響應並採取適當的措施。