2 Stimmen

Implementierung der Funktion "Herunterladen auf den Computer" im Browser

Ich versuche, eine mp3 Datei unter einem bestimmten Link mit NSURLConnection . Allerdings erhalte ich in der Regel Zeitüberschreitungsfehler. Wenn ich den Link in den Browser eingebe, wird der Standardplayer angezeigt, aber die Musikdatei wird auch nicht geladen:

Downloading mp3's is not illegal in all countries

Wenn ich jedoch die folgende einfache HTML-Datei erstelle:

<html>
    <body>
        <a href="link_to_the_mp3" target="_blank">Download</a>
    </body>
</html>

Laden Sie dann die Datei in Safari, klicken Sie mit der rechten Maustaste auf das Download Link, dann wählen Sie Download to Computer (oder wie auch immer es im Englischen heißt), lädt Safari die Datei herunter.

Gibt es Ideen, wie ich dies in meiner eigenen Anwendung umsetzen kann?


Ich habe es mit

NSData *data = [NSData dataWithContentsOfURL:url];

y

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *r, NSData *data, NSError *e) { /.../ }];`

ohne Erfolg.

2voto

Michael Dautermann Punkte 87782

Es scheint, als ob Sie versuchen, eine Fliege mit einem Vorschlaghammer zu schlagen, indem Sie " NSURLConnection ".

Versuchen Sie es mit einer etwas anspruchsvolleren Aufgabe wie

NSData * mp3data = [[NSData alloc] initWithContentsOfURL:options:error: ];

(der zusätzliche Vorteil hier ist, dass Sie nützliche Fehler über die " error: "Parameter, den Sie an die Methode übergeben.

1voto

Pedro Vieira Punkte 3300

Hier ist ein Beispiel dafür, was Sie tun müssen:

NSURL* url = [NSURL URLWithString:yourMp3URLString];
//URL of the mp3 file

NSString* fileName = [NSString stringWithFormat:@"%@.mp3", mp3Name];
//NSString with the name of the mp3

NSString* destinationPath = [filePathString stringByAppendingPathComponent:fileName];
//NSString with the filePathString (NSString with path destination, you could 
//change it to something like this @"User/Desktop")
//and add the NSString filename to the end of it
//so, if we have like User/Desktop it will become User/Desktop/mp3Name.mp3

NSURLRequest* request = [NSURLRequest requestWithURL:url];
NSURLDownload* download = [[NSURLDownload alloc] initWithRequest:request delegate:self];
[download setDestination:destinationPath allowOverwrite:NO];
//create the URLRequest and Download the mp3 to the destinationPath

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X