pobieranie pliku rar

0

Witam
Czy jest jakiś sposób aby zmusić przeglądarkę to wyświetlenia okna pobierania pliku rar.
Do pliku odnoszę się przez location.href co powoduje że przeglądarka Chrome oraz Edge próbuje go otworzyć w karcie przeglądarki.

3

Dodanie do linku atrybutu download wymusi na przeglądarce pobieranie linku po kliknięciu weń.
Ale czy ci się wyświetli okno zapisu, czy po prostu zapisze, to już od konfiguracji przeglądarki zależy.

https://www.w3schools.com/tags/att_a_download.asp

 <a href="/images/myw3schoolsimage.jpg" download="nazwa do zapisu.rar"> 
0

Tylko że to HTML a nie js.
Czy jest odpowiednik tej metody w js?

0

Ok. To może tak:
-klikam na element który w jquery wczytuje mi plik PHP do ukrytej warstwy div
-ten plik PHP w prosty sposób tworzy liczbę pobrań pliku który chce pobrać
-następnie powinien uruchomić pobieranie pliku rar (bez znaczenia czy ze skryptu który ładuje PHP do warstwy czy z pliku PHP ale efekt jest ten sam) który chce pobrać a on uparcie chce go otwierać w przeglądarce (chrome i edge)

0

Masz tu przykładowe, gotowe rozwiązanie:
https://ourcodeworld.com/articles/read/189/how-to-create-a-file-and-generate-a-download-with-javascript-in-the-browser-without-a-server

A jak chcesz zapisać fakt pobierania, to albo wysyłasz JS-em zapytanie do pliku PHP, który to odnotuje:
https://www.w3schools.com/js/js_ajax_http_send.asp

Albo nie linkujesz bezpośrednio do pliku docelowego, tylko do PHP, który odnotuje fakt odpalenia go, a później zapoda ci z dysku odpowiednią treść.

0

Nie mam problemu z PHP i licznikiem tylko z wywołaniem pobierania pliku rar ze skryptu js/jquery. Tak aby go pobierał a nie wyświetlał.

2

Klasyk, musisz zrobić tak aby server wyłał odpowiedni content-disposition: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#As_a_response_header_for_the_main_body

W twoim przypadku w odpowiedzi powinien pojawić się nagłówek HTTP (aka header):

Content-Disposition: attachment; filename="xxx.rar"
0

Dziękuje - działa.

Jednak wczytując zawartość pliku php do diva przez jquery $('#licznik').load('licznik.php'); nie wiedząc dlaczego nagłówki są pomijane choć pozostały kod np zliczający kliknięcia działa więc pobiera nadal błędnie bo przeglądarka stara się go nadal wyświetlić.
Jednak w tym przypadku wystarczyło zastąpić ładowanie do diva samym location.href = 'plik.php'; w którym był ten nagłóweg aby zadziałało poprawnie

//edit1:
Działa tylko że jak się pobierze to archiwum ma niewłaściwy format?
Proszę o pomoc bo nigdy się nie bawiłem w php a muszę zrobić do końca tą jedną rzecz aby skończyć stronę :)

zawartość pliku do zliczania i inicjowania pobierania:

<?php
	$plik = fopen('licznik.txt', 'r');
	$licznik = fgets($plik);
	fclose($plik);

	$licznik++;

	$plik = fopen('licznik.txt', 'w');
	fwrite($plik, $licznik);
	fclose($plik);

	header('Content-Disposition: attachment; filename="plik.rar"');
	header('plik.rar');
?>

//edit2
problem rozwiązany

	header('Content-Disposition: attachment; filename="plik.rar"');
//	header('plik.rar');
	readfile('plik.rar');

po nagłówku plik należy pobrać poprzez readfile a nie headerem
jeszcze raz dziękuje za pomoc @0xmarcin

1 użytkowników online, w tym zalogowanych: 0, gości: 1