2012-11-16 70 views
1

因此,我試圖使用AFNetworking將POST文件上傳到服務器。
因此,從他們的網站使用示例代碼我有這個設置。當它運行時,東西被上傳到服務器(或者至少它離開我的電腦)。我可以監視上傳,當上傳完成時,服務器會識別它已完成並加載文件,但會加載舊的XML。所以它正確地連接到服務器,但我不知道爲什麼文件上傳無法正常工作。此外,我只是想發送文件,服務器不需要任何標題或參數等
所以我想知道如果我已經存儲了正確的數據?或者,如果我沒有正確地發送服務器或者什麼?任何建議將有幫助使用AFNetworking上傳POST文件

NSData *iTunesXMLData = [NSData dataWithContentsOfFile:filePath]; 

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 

    /* NSMutableURLRequest *request =[httpClientmultipartFormRequestWithMethod:@"POST"  
path:@"/upload.php?id=5" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
    [formData appendPartWithFileData:iTunesXMLData name:@"iTunes Music Library" fileName:@"iTunes Music Library.xml" mimeType:@"application/xml"]; 
}];*/ 

//I tried this way also, both did the same thing 

NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload.php?id=5" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
    [formData appendPartWithFormData:iTunesXMLData name:@"iTunes Music Library"]; 
}];` 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];` 

NSLog(@"Operation: %@", operation); 
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { 
    NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite); 
}]; 
[operation start]; 

回答

1

您是否試圖捕獲操作的成功/失敗?試試這個setUploadProgressBlock後:

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
    // Operation ended successfully 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    // Something happened! 
    NSLog(@"ERROR: %@, %@", operation, error); 
    // Here you can catch operation.responseString to see the response of your server 
}]; 

這是一個簡單的方法來知道你的服務器返回什麼。如果有東西上傳到您的服務器,請仔細檢查您是否獲得了正確的文件。 AFAIK,你的AFNetwork似乎沒問題。

+0

感謝您的建議,我確實添加了一段時間,它確實幫助我診斷問題。 PHP服務器需要具有特定文件名的文件。 – urbanrider