2013-05-04 18 views
5

Używam wtyczki do generowania pliku csv z tabeli, plik jest pobierany z "pobierz" nazwę pliku, jak mogę zmienić nazwę pliku np. jak dowload.csvJavascript: ustaw nazwę pliku do pobrania

var csv = $("#table").table2CSV({delivery:'download'}); 
window.location.href = 'data:text/csv;charset=UTF-8,'+ encodeURIComponent(csv); 

Odpowiedz

27

napisałem narzędzie można wykorzystać do zapisania pliku do folderu pobrania lokalnej maszynie z niestandardowym pliku, jeśli to możliwe na komputerze klienta.

od tego pisania potrzebujesz chrom, firefox lub IE10 dla tej konkretnej możliwości, ale to narzędzie powraca do nienazwanego pobierania, jeśli to wszystko, co jest dostępne, ponieważ coś jest lepsze niż nic ...

do użytku:

i magicznego kodu:

function download(strData, strFileName, strMimeType) { 
    var D = document, 
     a = D.createElement("a"); 
     strMimeType= strMimeType || "application/octet-stream"; 


    if (navigator.msSaveBlob) { // IE10 
     return navigator.msSaveBlob(new Blob([strData], {type: strMimeType}), strFileName); 
    } /* end if(navigator.msSaveBlob) */ 


    if ('download' in a) { //html5 A[download] 
     a.href = "data:" + strMimeType + "," + encodeURIComponent(strData); 
     a.setAttribute("download", strFileName); 
     a.innerHTML = "downloading..."; 
     D.body.appendChild(a); 
     setTimeout(function() { 
      a.click(); 
      D.body.removeChild(a); 
     }, 66); 
     return true; 
    } /* end if('download' in a) */ 


    //do iframe dataURL download (old ch+FF): 
    var f = D.createElement("iframe"); 
    D.body.appendChild(f); 
    f.src = "data:" + strMimeType + "," + encodeURIComponent(strData); 

    setTimeout(function() { 
     D.body.removeChild(f); 
    }, 333); 
    return true; 
} /* end download() */ 

aktualizacja: dodano przyszłość odporne IE rutynowej

update2: checkout the evolved version on GitHub, który zawiera obsługę danychURL i Blob.

+1

Wygląda dobrze, ale nie obsługuje żadnej przeglądarki przed 2012 rokiem. Sądzę, że to najlepsze, co możemy zrobić po pobraniu ze strony klienta. – styfle

+0

Rzeczywiście, awaryjność dataURL działa na dość starych kopiach firefox i pewnym problemie typu MIME na starszych komputerach. Używałem tej funkcji przez lata, zanim dodałem IE10 i możliwości [pobierania] w zeszłym roku ... – dandavis

+1

'BlobBuilder' został przestarzały. Zmień odpowiedź, aby zamiast tego użyć konstruktora 'Blob'. –

Powiązane problemy