Kein Content-Disposition Header mit javascript möglich!

Begonnen von Webfan, 18 September 2015, 16:54:08

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Webfan

Hallo,
ich habe ein Problem für das ich noch keine Lösung sehe:
Ich möchte eine Datei per javascript zum Download anbieten und dabei den Dateinamen vorgeben, so wie es normalerweise mit dem Content-Disposition: attachment; filename="dateiname.txt" header üblich ist.

So wie ich es bisher verstanden habe gibt es dafür allein mit javascript KEINE Möglichkeit derzeit?

Es gibt:
- Datei vom Server mit dem Header senden lassen, ist klar. Genau das möchte ich allerdings ausdrücklich nicht.
- Das download attribut vom a Tag. Funktioniert leider bei mir nicht, wenn ich den a.click trigger erscheint keinerlei Download Dialog.

Kennt jemand eine Lösung oder ein Workaround für das Problem?

Ich habe auch, bisher ohne nennenswerten erfolg bezüglich des Dateinamens folgendes Script zur Hilfe genommen: https://github.com/johnculviner/jquery.fileDownload

Mein bisheriger Code:



_.download = function(content, filename, type, preparingMessageHtml, failMessageHtml, parent, hidden ){
if(null === type || 'undefined' === typeof type)type = 'application/octet-stream';
if(null === filename || 'undefined' === typeof filename)filename = 'file.dat';
if('boolean' !== typeof hidden)hidden = true;
if(null === parent || 'undefined' === typeof parent)parent = Dom.getTagNames('body')[0];
 
if(null === preparingMessageHtml || 'undefined' === typeof preparingMessageHtml)preparingMessageHtml = 'Downloading...';
  if(null === failMessageHtml || 'undefined' === typeof failMessageHtml)failMessageHtml = 'Download failed.';
   
try {
        var blob = new Blob([content], {type: type});
    } catch (e) {
        var bb = new (window.WebKitBlobBuilder || window.MozBlobBuilder);
        bb.append(content);
        var blob = bb.getBlob(type);
    }
   
  var url = (window.webkitURL || window.URL).createObjectURL(blob); 
   

    var a = Dom.create('a');
    a.style.display = 'none';
  a.setAttribute('download', filename);
  a.setAttribute('target', '_blank');
  a.setAttribute('class', 'fileDownload' + Guid.newGuid());
   /* a.innerHTML = filename; */
   Dom.addText(filename,a);
     
    $( a ).click(function( event ) {
        $.fileDownload(url, {
        popupWindowTitle : filename,
            preparingMessageHtml: preparingMessageHtml,
            failMessageHtml: failMessageHtml
        });
       return false;   
    }).trigger( $.Event( "click" ) );
   


};


MirkoH

Zitat von: Webfan am 18 September 2015, 16:54:08So wie ich es bisher verstanden habe gibt es dafür allein mit javascript KEINE Möglichkeit derzeit?

das ist leider auch mein Kenntnisstand. Ein Workaround ist mir nicht bekannt. Was genau ist denn so erfolglos an deinem Script?
Falls Du inzwischen (dein Post ist ja etwas her) eine Lösung gefunden hast, kannst Du ja nochmal posten. Rein aus Interesse wäre ich gespannt, ob und wie es geklappt hat.

Gruß

Mirko
Beste Grüße

Mirko

Howler-P

Ich fürchte da wirst Du keine Antwort mehr bekommen @ Mirko, der User hat wohl seinen Account gelöscht, siehe diesen Thread: http://www.pragmamx.org/Forum-topic-34756.html

Viele Grüße!
"Vernunft annehmen kann niemand, der nicht schon welche hat" (Marie Freifrau von Ebner-Eschenbach)