Neeraj Neeru
Neeraj Neeru

Reputation: 570

downloading using NSURLConnection not downloading anything?

i am using NSURLConnection to download mp3 data from the server , my code is here

- (IBAction)downloadData:(id)sender
 {

   NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
   NSURL *url = [[NSURL alloc] initWithString:@"http://viadj.viastreaming.net/start/psalmsmedia/ondemand/Nin%20snehamethrayo.mp3"];

   [request setURL:url];
   [url release];
   url = nil;

   NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];


 }

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
 {
     responseData = [[NSMutableData alloc] init];
 }

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
 {
   [responseData appendData:data];
 }

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
 {
  [responseData release];
  [connection release];

 }

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
 {

  NSLog(@"Succeeded! Received %d bytes of data",[responseData
                                               length]);
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *fileName = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"];

  [responseData writeToFile:fileName atomically:YES];

  responseData = nil;
  self->imageConnection = nil;


  }

am little bit confused about the path given to download. when i click download button i shows "Succeeded! Received 1329 bytes of data" but nothing is downloading. need some help. how will we specify the local path of iPhone to store downloaded data?

Upvotes: 0

Views: 965

Answers (2)

Guru
Guru

Reputation: 5363

No need for any code change I think.Just put an nslog and see...

NSString *fileName = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"];
NSLog(@"%@",fileName);

That will list the file location like this /Users/me/Library/Application Support/iPhone Simulator/5.0/Applications/(your app)/Documents/myFile. ie the downloaded file is in your document folder.

note: don't forget to put the file format ie

NSString *fileName = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile.mp3"];

Upvotes: 0

Hector
Hector

Reputation: 3907

- (IBAction)downloadData:(id)sender
{
  NSURL *url = [[NSURL alloc] initWithString:@"http://viadj.viastreaming.net/start/psalmsmedia/ondemand/Nin%20snehamethrayo.mp3"];
  NSMutableURLRequest   *theRequest_to = [NSMutableURLRequest requestWithURL:url];
  [url release];
  NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:theRequest_to delegate:self];

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response
{
  NSString *filepath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"snehamethrayo.mp3"]; // here you can set your filename which you can get from url 
  [[NSFileManager defaultManager] createFileAtPath:filepath contents:nil attributes:nil];
  file = [[NSFileHandle fileHandleForUpdatingAtPath:filepath] retain];// Here file is object of NSFileHandle and its declare in .h File
  [file seekToEndOfFile];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
  [file seekToEndOfFile];
  [file writeData:data];
}


- (void)connectionDidFinishLoading:(NSURLConnection*)connection 
{
 [file closeFile];
}

Upvotes: 2

Related Questions