Я использую ASIHTTPFormDataRequest для загрузки видеофайла.Я знаю, что мой код работает, потому что когда я загружаю видео на iPhone размером менее 1,5 МБ (низкое качество менее 1 минуты 40 секунд), оно успешно публикуется.Я был убежден, что это проблема с сервером, поэтому мы проводили все тесты и возвращались безуспешно.Только на днях я смог успешно загрузить большой файл в симуляторе iPhone.Файл был более 5 МБ и высокого качества.Поэтому я вынужден верить, что это как-то связано с самим устройством iPhone.Я погуглил шторм и вернулся с тем же глупым ответом: проблема с сервером.Ну, не ...
Вот мой код:
-(void) post:(NSData *) pVideoData progressBarView:(UIProgressView *) pProgressBarView{
pVideoData = [NSData dataWithContentsOfFile: m_pAppDelegate.m_pAppData.m_pPhotoURL];
NSString *urlAddress = [NSString stringWithString:@"https://api.sitename.com/action/upload"];
NSURL *url = [NSURL URLWithString:urlAddress];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:API_KEY forKey:@"api_key"];
[request setPostValue: m_pAppDelegate.m_pAppData.m_sTokenKey forKey:@"user_token"];
[request setPostValue: @"somename" forKey:@"tag"];
[request setPostValue: [AppData getIPAddress] forKey:@"ip"];
[request setData:pVideoData forKey:@"file"];
request.numberOfTimesToRetryOnTimeout = 3;
[request setDelegate:self];
[request showAccurateProgress];
[request setShouldStreamPostDataFromDisk:YES];
[request setDidFinishSelector:@selector(postRequestSuccess:)];
[request setDidFailSelector:@selector(postRequestFailed:)];
[request startAsynchronous];
[request setUploadProgressDelegate: pProgressBarView];}
Все отлично работает.Обратите внимание, что я уже попробовал следующее: синхронная загрузка и набор файлов.Но я не верю, что проблема заключается в моем коде или моем сервере.
Вот данные, которые я получаю при загрузке: пожалуйста, обратите внимание на различия между ними.
УСПЕШНАЯ ВИДЕО ЗАГРУЗКА:
2012-03-13 14:31:06.413 MYAPP[7805:707] [STATUS] Starting asynchronous request <ASIFormDataRequest: 0xb9bc00>
2012-03-13 14:31:06.543 MYAPP[7805:8c07]
==== Building a multipart/form-data body ====
--0xKhTmLbOuNdArY-26765320-0965465416-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="api_key"
*SECRET --0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="user_token"
Br300MCw4P-l06SFITFCHdiifBHdOCPczX0Y830Yfabox3wLMPs2s7MlWTAS7F2TlwuhL2kiZ7mEXeDWkmDi5g
--0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="tag"
NPSH Live
--0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="ip"
61.197.151.129
--0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="longitude"
-122.357832
--0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="latitude"
47.781178
--0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66
Content-Disposition: form-data; name="file"; filename="file"
Content-Type: application/octet-stream
[920870 bytes of data]
--0xKhTmLbOuNdArY-26765320-0916-4395-BA24-AA5CF2B58A66--
==== End of multipart/form-data body ====
2012-03-13 14:31:06.550 MYAPP[7805:8c07] [CONNECTION] Request <ASIFormDataRequest: 0xb9bc00> will not use a persistent connection
2012-03-13 14:31:06.819 MYAPP[7805:8c07] [THROTTLING] ===Used: 238 bytes of bandwidth in last measurement period===
wait_fences: failed to receive reply: 10004003
2012-03-13 14:31:07.992 MYAPP[7805:8c07] [THROTTLING] ===Used: 327680 bytes of bandwidth in last measurement period===
2012-03-13 14:31:09.053 MYAPP[7805:8c07] [THROTTLING] ===Used: 655360 bytes of bandwidth in last measurement period===
2012-03-13 14:31:09.820 MYAPP[7805:8c07] [STATUS] Request <ASIFormDataRequest: 0xb9bc00> finished uploading data
2012-03-13 14:31:10.070 MYAPP[7805:8c07] [THROTTLING] ===Used: 860720 bytes of bandwidth in last measurement period===
2012-03-13 14:31:11.320 MYAPP[7805:8c07] [THROTTLING] ===Used: 0 bytes of bandwidth in last measurement period===
2012-03-13 14:31:11.835 MYAPP[7805:8c07] [STATUS] Request <ASIFormDataRequest: 0xb9bc00> received response headers
2012-03-13 14:31:11.843 MYAPP[7805:8c07] [STATUS] Request <ASIFormDataRequest: 0xb9bc00> finished downloading data (105 bytes)
2012-03-13 14:31:11.854 MYAPP[7805:8c07] [STATUS] Request finished: <ASIFormDataRequest: 0xb9bc00>
Не удалось загрузить:
[STATUS] Starting asynchronous request <ASIFormDataRequest: 0xb8e200>
wait_fences: failed to receive reply: 10004003
2012-03-13 14:21:03.093 MYAPP[7805:8c07]
==== Building a multipart/form-data body ====
--0xKhTmLbOuNdArY-E6B28382AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="api_key"
*secret
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="user_token"
Br300MCw4P-l06SFITFCHdiifBHdOCPczX0Y830Yfabox3wLMPs2s7MlWTAS7F2TlwuhL2kiZ7mEXeDWkmDi5g
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="tag"
test
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="ip"
81.197.151.699
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="longitude"
-122.357874
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="latitude"
47.781192
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E
Content-Disposition: form-data; name="file"; filename="file"
Content-Type: application/octet-stream
[3280300 bytes of data]
--0xKhTmLbOuNdArY-E6B2AE4C-F123-499E-8076-19CC8D41F46E --
==== End of multipart/form-data body ====
2012-03-13 14:21:03.099 MYAPP[7805:8c07] [CONNECTION] Request <ASIFormDataRequest: 0xb8e200> will not use a persistent connection
2012-03-13 14:21:03.354 MYAPP[7805:8c07] [THROTTLING] ===Used: 2500 bytes of bandwidth in last measurement period===
2012-03-13 14:21:04.605 MYAPP[7805:8c07] [THROTTLING] ===Used: 0 bytes of bandwidth in last measurement period===
2012-03-13 14:21:05.698 MYAPP[7805:8c07] [THROTTLING] ===Used: 458752 bytes of bandwidth in last measurement period===
2012-03-13 14:21:06.744 MYAPP[7805:8c07] [THROTTLING] ===Used: 688128 bytes of bandwidth in last measurement period===
2012-03-13 14:21:07.755 MYAPP[7805:8c07] [THROTTLING] ===Used: 1114112 bytes of bandwidth in last measurement period===
2012-03-13 14:21:08.855 MYAPP[7805:8c07] [THROTTLING] ===Used: 950272 bytes of bandwidth in last measurement period===
2012-03-13 14:21:09.897 MYAPP[7805:8c07] [THROTTLING] ===Used: 458752 bytes of bandwidth in last measurement period===
2012-03-13 14:21:11.050 MYAPP[7805:8c07] [THROTTLING] ===Used: 393216 bytes of bandwidth in last measurement period===
2012-03-13 14:21:12.085 MYAPP[7805:8c07] [THROTTLING] ===Used: 917504 bytes of bandwidth in last measurement period===
2012-03-13 14:21:13.104 MYAPP[7805:8c07] [THROTTLING] ===Used: 458752 bytes of bandwidth in last measurement period===
2012-03-13 14:21:13.858 MYAPP[7805:8c07] [STATUS] Request <ASIFormDataRequest: 0xb8e200> finished uploading data
2012-03-13 14:21:14.354 MYAPP[7805:8c07] [THROTTLING] ===Used: 1123122 bytes of bandwidth in last measurement period===
2012-03-13 14:21:15.014 MYAPP[7805:8c07] [STATUS] Request <ASIFormDataRequest: 0xb8e200> received response headers
2012-03-13 14:21:15.017 MYAPP[7805:8c07] [STATUS] Request <ASIFormDataRequest: 0xb8e200> finished downloading data (76 bytes)
2012-03-13 14:21:15.034 MYAPP[7805:8c07] [STATUS] Request finished: <ASIFormDataRequest: 0xb8e200>
Итак, что вы думаете, ребята, проблема может быть.Еще одно замечание: я пытался использовать другие соединения Wi-Fi, а также отключить Wi-Fi, 3g и отключить 3g и только с помощью Wi-Fi.Как вы думаете, есть ли пределы того, сколько пользователь может загрузить на iPhone?
ОДНО ПОСЛЕДНЕЕ ПРИМЕЧАНИЕ:
Загрузка, очевидно, прошла успешно, но я предполагаю, что файл, который я загружаю, становится недействительным все вместе,Мой сервер отвечает успешно, говоря мне, что все установлено и все в порядке, кроме самого видеофайла.Видео файл недействителен.Тем не менее, он работает в симуляторе ...
РЕДАКТИРОВАТЬ !!
Я ТОЛЬКО ЗАКОНЧИЛ ИСПОЛЬЗОВАТЬ РАЗНЫЙ МЕТОД ДЛЯ ЗАГРУЗКИ, И Я ПОЛУЧИЛ ТОЧНЫЕ ОДНО ОШИБКИ ДЛЯ ТОЧНЫХ ЖЕ ОБСТОЯТЕЛЬНЫХ ОБСТОЯТЕЛЬСТВ, ТАК ЯНАЧИНАЮТ ДУМАТЬ, ЧТО ЭТО ЧТО-ТО С МОИМ ФАЙЛАМИ?МОЖЕТ ЛИ ЕГО ПАМЯТЬ?
NSURL *remoteUrl = [NSURL URLWithString:@"http://api.mysite.com/upload"];
NSURL *myfile = [NSURL URLWithString:m_pAppDelegate.m_pAppData.m_PendingInfo.m_pMovieURL];
NSData * photoImageData = [NSData dataWithContentsOfFile: m_pAppDelegate.m_pAppData.m_PendingInfo.m_pMovieURL];
NSError **error;
// [photoImageData writeToFile:filePath atomically:YES];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:remoteUrl];
NSMutableURLRequest *afRequest = [httpClient multipartFormRequestWithMethod:@"POST"
path:@""
parameters:nil
constructingBodyWithBlock:^(id <AFMultipartFormData>formData)
{
[formData appendPartWithFormData:[API_KEY dataUsingEncoding:NSUTF8StringEncoding]
name:@"api_key"];
[formData appendPartWithFormData:[m_pAppDelegate.m_pAppData.m_sTokenKey dataUsingEncoding:NSUTF8StringEncoding]
name:@"user_token"];
[formData appendPartWithFileData:photoImageData
name:@"file"
fileName:@"test.mov"
mimeType:@"video/quicktime"];
[formData appendPartWithFileURL:myfile name:@"file" error:error];
}
];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation setCompletionBlock:^{
NSLog(@"%@", operation.responseString); //Gives a very scary warning
}];
[operation start];