2016-11-10 203 views
1

我想在服务器上传语音录制。将网址转换为NSData

我的文件网址是:

file:///Users/xantatech/Library/Developer/CoreSimulator/Devices/77F4D768-1F04-4390-B60F-F1FE79388653/data/Containers/Data/Application/87C457FA-1A9F-4CA9-A651-6A3D411A0B7E/Documents/myAudio0.mp3 

我的代码是:

NSData* data = [NSData dataWithContentsOfURL:audioURL options:NSDataReadingUncached error:&error]; 

但数据是零。

+0

看到这个曾经http://stackoverflow.com/questions/11525942/play-audio-ios-objective- ç –

+0

尝试使用absoluteURL '的NSData *数据= [NSData的dataWithContentsOfURL:[audioURL absoluteURL]选项:NSDataReadingUncached误差:&错误];' – nynohu

+0

没有奏效,也零发生。 –

回答

0

使用此代码从文件夹中获取数据:

if([[NSFileManager defaultManager] fileExistsAtPath:filepath) 
{ 
    NSData *data = [[NSFileManager defaultManager] contentsAtPath:filepath]; 
} 
else 
{ 
    NSLog(@"File not exits"); 
} 
0

你只需要做:

NSURL *imgPath = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"png"]; 
NSString *path = [imgPath absoluteString]; 
NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString:path]; 
0

试试这个

NSData* data =[[NSData alloc]init]; 
data = [NSData dataWithContentsOfFile:[NSURL URLWithString:path]]; 
+0

不能再次工作.. –

1

请尝试以下代码

NSString *audioURLString = @"file:///Users/xantatech/Library/Developer/CoreSimulator/Devices/77F4D768-1F04-4390-B60F-F1FE79388653/data/Containers/Data/Application/87C457FA-1A9F-4CA9-A651-6A3D411A0B7E/Documents/myAudio0.mp3"; 
NSString *sendStr = [[audioURLString absoluteString] stringByReplacingOccurrencesOfString:@"file:///private" withString:@""]; 
NSData *data = [[[NSData dataWithContentsOfFile:sendStr]]]; 

好运.....

0

运行后:
文件:///用户/ xantatech /库/开发商/ CoreSimulator /设备/ 77F4D768-1F04-4390-B60F-F1FE79388653 /数据/集装箱/数据/应用/ “87C457FA-1A9F-4CA9-A651-6A3D411A0B7E” /Documents/myAudio0.mp3
中的粗体文字 “87C457FA-1A9F-4CA9-A651-6A3D411A0B7E” 可能会改变;
你应该总是使用的方法来获得在沙箱的路径:

NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"myAudio0.mp3"];