Download di file sulla document root

di il
9 risposte

Download di file sulla document root

Ciao chiedo un'altro aiuto devo fare il download di file nella document root sapendo l'url del file
ho trovato questo codice in rete ho inserito l'url corretto
NSString *stringURL = @"http://www.miosito.com/folder/mioebook.epub";
    NSURL  *urlx = [NSURL URLWithString:stringURL];
    NSData *urlData = [NSData dataWithContentsOfURL:urlx];
    if ( urlData )
    {
        NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString  *documentsDirectory = [paths objectAtIndex:0];
        
        NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"mioebook.epub"];
        [urlData writeToFile:filePath atomically:YES];
    }
non mi da errore ma non vedo da nessuna parte il file dawnloadato come posso verificare se funziona?? cioe dovrebbe scaricare il file nella cartella della app?? ma non lo fa forse è un codice obsoleto? ci sono modi migliori per fare il download di file nella document root
io avevo trovato questo
https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking
ma non ho capito nemmeno se fa al caso mio come mi consigliate di fare il download di file sulla document root??? grazie dell'aiuto

9 Risposte

  • Re: Download di file sulla document root

    E piu semplice di quanto tu possa pensare. Lascia perdere AFNetworking, per salvare un file nella cartella document della tua app basta questo:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"];
    [data writeToFile:appFile atomically:YES];
    prima di fare ciò però ovviamente hai bisogni di istanziare e valorizzare "data".

    data è un NSData che rappresenta il tuo file. Leggiti la documentazione e troverai il modo per istanziare un NSData avendo il file che vuoi salvare. Per intenderci, se vuoi salvare un immagine fai cosi (supponendo che l'UIImage si chiami "img"):
    NSData *data = UIImageJPEGRepresentation(img, 1.0);
    Spero innanzi tutto che ciò che ho scritto funzioni (sto da mesi senza mac, quindi non posso provare nulla di ciò che scrivo xD) e che ti sia d'aiuto sta roba.

  • Re: Download di file sulla document root

    Grazie mille! si il tuo codice è molto piu semplice!!!! se data lo valorizzo cosi per scaricare un epub pero poi non me lo trovo nella cartella della app
     
        NSString *stringURL = @"http://www.miosito.com/folder/XSelf_Publishing_Hack_2.0.epub";
        NSURL  *urlx = [NSURL URLWithString:stringURL];
        NSData *data = [NSData dataWithContentsOfURL:urlx];
        
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"XSelf_Publishing_Hack_2.0.epub"];
        [data writeToFile:appFile atomically:YES];
      
    cosa sto sbagliando? o sbaglio nel verificare? non lo trovo nella cartella della app scusa se rompo oggi ti ringrazio se mi fai capire perchè non c'è e poi non rompo piu -xoggi
  • Re: Download di file sulla document root

    C'è una cosa che non ti ho detto. [NSData dataWithContentOfURL:] può impiegare del tempo, quindi ti conviene eseguire questo e tutta la parte di salvataggio in blocchi asincroni. Così sei sicuro che il file lo va a salvare solo e soltanto quando il tuo NSData ha finito di prendersi il contenuto dall url.

    In pratica in questo modo:
    
    NSString *stringURL = @"http://www.miosito.com/folder/XSelf_Publishing_Hack_2.0.epub";
    NSURL  *urlx = [NSURL URLWithString:stringURL];
    dispatch_async(downloadEpub, ^{
        NSData *data = [NSData dataWithContentsOfURL:urlx];
        dispatch_sync(dispatch_get_main_queue(), ^{
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
            NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"XSelf_Publishing_Hack_2.0.epub"];
            [data writeToFile:appFile atomically:YES];
        });
    });
    
    Prova cosi e fammi sapere.

    PS: Se stai provando da simulatore, la cartella della tua app la troverai in "/Users/UserName/Library/Application Support/iPhone Simulator/4.3.2/Applications".
  • Re: Download di file sulla document root

    FUNZIONA!!!GRAZIE MILLE del tuo aiuto
    lho trovato qui /Users/nomeutente/Library/Application Support/iPhone Simulator/6.0/Applications/numeroserialeoqualcosadelgenere/ ho cercato direttamente il nome del file accertandomi che non lo avevo gia tra i miei documenti in locale ed è andata GRAZIE alla prossima
  • Re: Download di file sulla document root

    Prego ciao
  • Re: Download di file sulla document root

    Ciao se volessi scaricare i file in una cartella dentro la document root prima dovrei crearla da codice come dovrei modificare questo codice??
     NSURL  *urlx = [NSURL URLWithString:stringURL];
                NSData *data = [NSData dataWithContentsOfURL:urlx];
                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                NSString *documentsDirectory = [paths objectAtIndex:0];
                NSString *appFile = [documentsDirectory stringByAppendingPathComponent:filenamex ];
                [data writeToFile:appFile atomically:YES];
    avevo provato cosi ma non lo fa
     NSURL  *urlx = [NSURL URLWithString:stringURL];
                NSData *data = [NSData dataWithContentsOfURL:urlx];
                //NSData *data = UIImageJPEGRepresentation(img, 1.0);
                
                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                NSString *documentsDirectory = [paths objectAtIndex:0];
                NSString *folderName = @"UnzippedEpub";
                NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,folderName ];
                NSString *appFile = [filePath stringByAppendingPathComponent:filenamex ];
                [data writeToFile:appFile atomically:YES];
    grazie dell'aiuto
  • Re: Download di file sulla document root

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Cartella"];
    
    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];
    Verifica se c'è la directory, se non c'è la crea.

    Ciao
  • Re: Download di file sulla document root

    Grazie ancora funziona!!!!
  • Re: Download di file sulla document root

    Di nulla
Devi accedere o registrarti per scrivere nel forum
9 risposte