2012-08-08 1 views
0

Я хочу загрузить аудиофайл из моего приложения iPhone на веб-сервер, но когда я его конвертирую в NSData, это займет от 30 до 40 минут в преобразовании, поэтому можете ли вы дать какое-либо лучшее решение для этого.Как загрузить mp3-файл размером до 5 мб на веб-сервере в iPhone

+0

Что размер звукового файла, который вы хотите загрузить? Я разговариваю ок. 22 МБ аудиофайла в NSData, и для преобразования не требуется такого большого времени. Также отправьте код конверсии. –

+0

NSString * file1 = [[NSBundle mainBundle] pathForResource: @ "background" ofType: @ "mp3"]; NSData * file1Data = [[NSData alloc] initWithContentsOfFile: file1]; Размер файла background.mp3 составляет всего 4,2 мб, а конверсия займет приблизительно 30-40 минут. – SKMAISM

ответ

2

1) .Чтобы конвертировать аудио файлы в NSData:

NSString *audioFilePath = @""; // local path where audio stored 
NSData *audioData = [[NSData alloc] initWithContentsOfFile:audioFilePath]; 

2) .Чтобы загрузить аудиофайл:

NSString *audioName = @"myAudio.caf"; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://someurl.aspx"]];  
[request addData:audioData withFileName:audioName andContentType:@"audio/caf" forKey:@"audioFile"]; 
[request setDelegate:self]; 
[request setTimeOutSeconds:500]; 
[request setDidFinishSelector:@selector(uploadRequestFinished:)]; 
[request setDidFailSelector:@selector(uploadRequestFailed:)]; 
[request startAsynchronous]; 

- (void)uploadRequestFinished:(ASIHTTPRequest *)request 
{ 
    UIApplication* app = [UIApplication sharedApplication]; 
    app.networkActivityIndicatorVisible = NO; 
    NSData *webData = [[NSData alloc] initWithData:[request responseData]]; 
    NSString *strEr = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding]; 
} 

- (void) uploadRequestFailed:(ASIHTTPRequest *)request 
{ 
    NSLog(@"responseStatusCode %i",[request responseStatusCode]); 
    NSLog(@"responseString %@",[request responseString]); 
    NSError *error = [request error]; 
    UIApplication* app = [UIApplication sharedApplication]; 
    app.networkActivityIndicatorVisible = NO; 
} 
+0

Спасибо за вашу поддержку. Но я работаю над xcode 4.2 и IOS 5, и я сталкиваюсь с большим количеством недостающих файлов или фреймворка. Можете ли вы прикрепить исходный код zip-файла. – SKMAISM

+0

Выше код работает отлично с Xcode 4.2 и IOS 5. Возможно, у вас нет вспомогательных файлов ASIHTTP, вы можете скачать его с https://github.com/pokeb/asi-http-request/tree. –

+0

Спасибо за ответ и поддержку. Но когда я конвертирую аудиофайл в NSData через ваш код, снова требуется много времени для преобразования. Есть и другие альтернативы, кроме nsdata, чтобы быстро отправлять звуковой файл iur на сервер. – SKMAISM

Смежные вопросы