【问题标题】:How to upload a mp3 file upto 5 mb size on webserver in iPhone如何在 iPhone 的网络服务器上上传最大为 5 mb 的 mp3 文件
【发布时间】:2012-08-08 10:10:21
【问题描述】:

我想将我的 iPhone 应用程序中的音频文件上传到网络服务器,但是当我将其转换为 NSData 时,转换过程最多需要 30 到 40 分钟,所以你能提供更好的解决方案吗?

【问题讨论】:

  • 您要上传的音频文件大小是多少?我正在交谈大约。 22MB 的音频文件到 NSData,转换时间并不长。请也发布您的转换代码。
  • NSString *file1 = [[NSBundle mainBundle] pathForResource:@"background" ofType:@"mp3"]; NSData *file1Data = [[NSData alloc] initWithContentsOfFile:file1]; background.mp3 文件的大小仅为 4.2 mb,转换大约需要 30 到 40 分钟。

标签: iphone objective-c ios web-services


【解决方案1】:

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;   
}

【讨论】:

  • 感谢您的支持。但是我正在研究 xcode 4.2 和 IOS 5,并且我面临很多文件丢失或框架。能否附上源代码zip文件。
  • 以上代码在 Xcode 4.2 和 IOS 5 上完美运行。您可能没有 ASIHTTP 帮助文件,您可以从 github.com/pokeb/asi-http-request/tree 下载它。
  • 感谢您的回复和支持。但是,当我通过您的代码将音频文件转换为 NSData 时,转换又需要很长时间。除了 nsdata 之外,还有其他替代方法可以在服务器上快速发送 iur 音频文件。
  • 您能否确认一下,转换或上传到服务器是否需要很长时间?
  • 我只使用了这两行 "NSString *audioFilePath = @"background.mp3"; NSData *audioData = [[NSData alloc] initWithContentsOfFile:audioFilePath];"当我 nslog 音频数据时,它会花费很多时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 2017-04-05
  • 2012-10-28
  • 2012-07-12
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多