我想从我的iOS原生应用程序上传和下载一些文件(特别是扩展名为.caf的音频文件)到服务器(http)位置。我已经被服务器管理员提供了http文件夹路径(http:...)。
由于它仅用于对另一个功能进行一些可行性分析,所以能否指导我用最简单的方法从服务器位置实现读写文件?或者,是否有必要编写一些服务器端代码(Web服务)来实现它?
仅供参考:我在服务器位置有一个示例文本文件,我可以使用ASIHTTPRequest直接读取该文件(参见下文 - 此处未使用任何Web服务 - 请原谅指定编辑路径)。但我不知道如何上传文件。
NSURL *url = [NSURL URLWithString:@"http://...Dispatcher/DispatcherTest.txt"];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
// Use when fetching text data
NSString *responseString = [request responseString];
NSLog(@"responseString = %@", responseString);
}];
[request setFailedBlock:^ {
NSError *error = [request error];
NSLog(@"error = %@", error);
}];
[request startAsynchronous];
提前致谢。
答案 0 :(得分:0)
如果您正在使用ASIHTTPRequest,则使用HTTP POST发送文件。请参阅文档中的“使用ASIFormDataRequest发送表单POST”。但是,ASIHTTPRequest不再开发中。您可能想要选择一个保持最新的库。我喜欢MKNetworkKit。
请注意,您必须在服务器上放置一些能够响应POST并将文件保存在某处的内容,这不仅仅是神奇地免费提供。
答案 1 :(得分:0)
对于服务器上的商店文件,请使用以下代码
-(void) Storeonserver
{
NSUserDefaults *dflts=[NSUserDefaults standardUserDefaults];
NSString *strURL = // your server address
NSData *file1Data = [NSData dataWithContentsOfFile:[recordedTmpFile path]];
//recordedTmpFile= your audio file path
NSString *name=[NSString stringWithFormat:@"abc.caf"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:strURL]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",name]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:file1Data]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding] ;
NSLog(@"Return String= %@",returnString);
}
从服务器下载和播放音频使用以下代码
-(void) playAudio
{
//Play recoding from server
NSUrl *url=[NSURL URLWithString:@"http://yourServerSideUrl/abc.caf"]
NSData *mydata = [NSData dataWithContentsOfURL:url];
AVAudioPlayer * avPlayer = [[AVAudioPlayer alloc] initWithData:mydata error:nil];
[avPlayer prepareToPlay];
[avPlayer play];
}