2012-03-26 3 views
0

Ich entwickle eine Erweiterung für Google Chrome, die eine MP3-Datei generiert und speichert sie in LocalStorage mit der FileSystem-API. Wenn ich speichere, gebe ich den MIME-Typ "application/octec-stream" an. Später sende ich dem Benutzer die Datei-URL, anstatt die Datei herunterzuladen, beginnt der Browser mit dem Abspielen auf dem html5-Player. Wenn man die Antwort betrachtet, ist klar, dass der zurückgegebene MIME-Typ basierend auf der Erweiterung der Datei "Audio/mp3" war. Die Frage ist: Wie kann ich den Browser effizient herunterladen, anstatt die Datei abzuspielen? Hier ist der kleine Ausschnitt von dem, was ich auf Javascript mache.Mime Typ auf FileSystem Api von Google Chrome

fs.root.getFile(contextData.songInfo.Name + ".mp3", { create: true }, function (fileEntry) { 

     // Create a FileWriter object for our FileEntry (log.txt). 
     fileEntry.createWriter(function (fileWriter) { 

      fileWriter.onwriteend = function (e) { 
       console.log('Write completed.'); 
      }; 

      fileWriter.onerror = function (e) { 
       console.log('Write failed: ' + e.toString()); 
      }; 

      var bb = new window.WebKitBlobBuilder(); 
      bb.append(buffer); 
      fileWriter.write(bb.getBlob('application/octet-stream')); 

      contextData.fileUrl = fileEntry.toURL(); 

      callback(contextData); 

     }, errorHandler); 



    }, errorHandler); 
+0

MIME-Typen existieren nur im HTTP-Protokoll, für das Dateisystem werden sie immer von der Dateierweiterung abgeleitet. Es scheint, dass Chrome Dateien behandelt, die mit der FileSystem API erstellt wurden. –

+0

Das Problem ist, dass, wenn ich den Benutzer auf die URL der Datei umleiten, ich wieder in HTTP-Welt bin, und wäre vernünftig, mich entscheiden zu lassen, welchen MIME-Typ mit der HTTP-Antwort zu senden. Ich möchte nicht, dass der Benutzer die Datei im Browser hört, sie müssen sie speichern. Im Moment füge ich eine .download-Erweiterung hinzu und ir löst den Download aus, aber die Datei muss später vom Benutzer umbenannt werden, was sehr ärgerlich ist. Vielleicht kapseln Sie die Datei in eine .zip-Datei, aber der Benutzer muss erneut Aktionen ausführen und dekomprimieren, bevor er sie verwendet. –

Antwort