2016-04-13 4 views
0

Ich versuche zu bekommen, die Länge einer mp3-Datei in meiner Ansicht nach zu lesen:Ungültige Datei Ausnahme zu versuchen, Datei mit Mutagen

from mutagen.mp3 import MP3 
def Upload(request): 
    data = {} 
    data['modal'] = render_to_string('partials/modals/upload.html') 

    if request.method == 'POST': 
     files = request.FILES 

     ... 

     mp3 = files.get('track') 

     mp3 = MP3(mp3); 
     print(mp3.info.length); 

Ich habe überprüft, dass die Datei nicht beschädigt ist oder ungültig, aber wenn ich versuche, diese letzten Zeilen Code zu tun, die ich erhalten:

TypeError: invalid file: <TemporaryUploadedFile: mySong.mp3 (audio/mpeg)> 

ich verstehe nicht, warum es mich gibt, dass, weil ich die Datei lesen kann, und ich kann sogar sagen django die Datei senden zu meinem Modell, und es spart zu dis k. Warum funktioniert das nicht?

+0

Ich bin mir nicht sicher, was das Problem ist, aber ich empfehle ein Formular zu verwenden, um 'request.FILES' zu erfassen, anstatt es manuell zu speichern wie' mp3 = MP3 (mp3) '. –

+0

@ShangWang Meine Web-App verlässt sich stark auf Ajax-Anfragen und die Verwendung eines Formulars ist in diesem Fall nicht ideal. –

Antwort

1

Es sieht so aus, als ob Sie die Klasse MP3 mit einem Dateinamen instanziieren sollen, nicht mit dem Dateihandle. Ich kann keine alternative Möglichkeit zur Instanziierung mit dem Dateihandle sehen. Daher müssen Sie den Inhalt von request.FILES in einer Datei speichern und dann MP3(filename).

Verwandte Themen