Lip
14
2013
14
2013
jQuery – Pobieranie pliku + Wysłanie danych przez Ajax
Z cyklu „Znalezione w sieci”, podrzucam krótki skrypt jQuery, który wysyła dane na serwer metodą POST/GET, a następnie zwrotnie otrzymuje plik do pobrania na dysk lokalny użytkownika.
W skrócie: wysłanie danych AJAXem, bez przeładowywania strony i wyświetlenie okna z pytaniem o zapis pliku na dysk.
Skrypt
1 2 3 4 5 6 7 8 9 10 11 12 |
jQuery.download = function(url, data, method){ if( url && data ){ data = typeof data == 'string' ? data : jQuery.param(data); var inputs = ''; jQuery.each(data.split('&'), function(){ var pair = this.split('='); inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; }); jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>') .appendTo('body').submit().remove(); }; }; |
Użycie
Radzę wysyłać dane zakodowane base64.
1 |
$.download( 'adres_skryptu_odbior_post_zwrot_plik.php','twojParametr=' + twojParametr + '&kolejnyParamter=' + kolejnyParamter, 'POST' ); |
Skrypt PHP, który otrzymuje żądanie. Zwrotnie wysyła zawartość pliku oraz odpowiedni nagłówek HTTP.
1 2 3 4 5 6 7 8 |
header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: TWOJ/TYP_PLIKU"); header("Content-Disposition: attachment; filename="nazwa_pliku.jpg";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($twoj_plik)); |
Dodatkowe informacje
• jquery_plugin_for_requesting_ajax_like_file_downloads
• http://davidmregister.com/163/
• http://php.net/manual/en/function.header.php
Podobne tematy
Dodaj komentarz
O mnie
Najnowsze wpisy
- Drzewo kategorii – budowa struktury od dołu do góry
- PHPExcel – export + import pliku XLS
- WordPress + Polylang – Tworzenie klasy CSS z ID strony/wpisu w wybranym języku
- Mailing – Poprawna konstrukcja szablonu maila HTML/CSS i prawidłowy wygląd w programie pocztowym
- Szukasz programisty PHP dla e-commerce?