简体   繁体   中英

Resume downloading a file using ASIHTTPRequest gives error

I am using ASIHTTPRequest for resuming the downloading of a file gives the error as below and the Resume code is given at the bottom:

Error Domain=ASIHTTPRequestErrorDomain Code=8 "Decompression of /Users/xxxx/Library/Application Support/iPhone Simulator/4.3.2/Applications/6E0D8E0F-08FD-440C-82F6-8E39E219884E/Documents/myPdf.pdf.download failed with code -3" UserInfo=0x4c6a8e0 {NSLocalizedDescription=Decompression of /Users/xxxx/Library/Application Support/iPhone Simulator/4.3.2/Applications/6E0D8E0F-08FD-440C-82F6-8E39E219884E/Documents/myPdf.pdf.download failed with code -3}

Starting download as below:

-(IBAction)startDownload:(id)sender
{
    NSURL *url = [NSURL URLWithString:self.sourcePath];
    ASIHTTPRequest *req =[[ASIHTTPRequest alloc] initWithURL:url];
        [request setDownloadDestinationPath:self.destinationPath];
        // This file has part of the download in it already
    [request setTemporaryFileDownloadPath:self.temporaryPath];
    [req setDownloadProgressDelegate:self];
    [req setDelegate:self];
    [req startAsynchronous];
    self.request = req;

}

and Pause Downloading as below:

-(IBAction)pauseDownload:(id)sender
{
    // Cancels an asynchronous request
    [request cancel];

    // Cancels an asynchronous request, clearing all delegates and blocks first
   // [request clearDelegatesAndCancel];

}

and Resume Download as below:

- (IBAction)resumeDownload:(id)sender
{
    NSURL *url = [NSURL URLWithString:
                  self.sourcePath];
    ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url];
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    NSError *err;
    NSDictionary *fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath:destinationPath error:&err];
    NSLog(@"file Dict: %@", fileDict);

    NSLog(@"size: %@",[fileDict valueForKey:NSFileSize]);
    NSInteger nSize =[[fileDict valueForKey:NSFileSize] intValue];

   // unsigned long long int size1 = [[fileDict valueForKey:NSFileSize] intValue];

    NSString *size = [NSString stringWithFormat:@"bytes=%d", nSize];
    NSLog(@"file size: %@",size);

    [dict setValue:size forKey:@"Range"];
    [request1 setRequestHeaders:dict];

    // NSString *downloadPath = @"/Users/ben/Desktop/my_work_in_progress.txt";

    // The full file will be moved here if and when the request completes successfully
    [request1 setDownloadDestinationPath:self.destinationPath];

    // This file has part of the download in it already
    [request1 setDownloadProgressDelegate:self];
    [request1 setDelegate:self];
    [request1 setTemporaryFileDownloadPath:self.temporaryPath];
    [request1 setAllowResumeForFileDownloads:YES];
    [request1 startAsynchronous];
    self.request = request1;
    //The whole file should be here now.
 //   NSString *theContent = [NSString stringWithContentsOfFile:downloadPath];
}

And I set the "Range" HTTP header field to the corresponding file size. The same file on server supports download pause, resume on the app http://itunes.apple.com/us/app/download-manager-pro-lite/id348573579?mt=8 How to implement the Resuming a download Thanks in advance.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM