2012-01-13 15 views
6

Mam skrypt pobierania pliku, który napisałem, który czyta pliki poniżej public_html i pozwala użytkownikowi na pobranie ich po sprawdzeniu, czy użytkownik jest zalogowany i że plik jest prawidłowym plikiem do pobrania.PHP: Pobierz skrypt plików nie działa na iPadzie

Problem, który ostatnio spotkałem, polega na tym, że na iPadzie po kliknięciu linku nic się nie dzieje.

Przykład kodu pobierz plik po wszystkie kontrole zostały przeprowadzone:

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: application/msword"); 
header("Content-Disposition: attachment; filename=\"file.doc\";"); 
header("Content-Length: 50688"); 

readfile(SITE_PATH .'/files/file.doc'); 

Ten skrypt został przetestowany i sprawdzony na PC, Mac i Linux maszyn w wielu przeglądarkach (FF, Opera, IE6-9 Chrome , Safari) i wszystko wydaje się działać dobrze, więc musi to być coś, co iPad robi inaczej.

Wyobrażam sobie, że ma to coś wspólnego z iPadem, który nie ma struktury plików jako takiej do pobierania plików, ale nie jestem pewien.

Czy ktoś wcześniej napotkał ten problem? Jeśli tak, czy istnieje poprawka?

+0

niepowiązanych: masz dwa pola nagłówka Content-Type. Wybierz jedno. Ponadto kodowanie transferu zawartości nie jest polem nagłówka HTTP. –

+0

@JulianReschke usunął je, wydaje się, że nic to nie dało. Zaktualizowane pytanie do odzwierciedlenia. – Nick

Odpowiedz

11

iOS Safari nie obsługuje pobierania plików ..

Aktualizacja: Ale jeśli szukasz, aby otworzyć pliki .doc na iPadzie to tak .. można zrobić ...

zastosowanie następujące -

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: application/msword"); 


readfile('file.doc'); 

jedyna różnica w kodzie, a kopalnia jest usunąłem nagłówek przywiązania prostu usunąć te header -

header("Content-Disposition: attachment; filename=\"file.doc\";"); 
header("Content-Length: 50688"); 

Właściwie można sprawdzić dla systemu operacyjnego klienta, jeśli system operacyjny iOS wtedy nie dodawać nagłówek do pobrania tak -

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: application/msword"); 

if (!Operating_System_Is_IOS) 
{ 

    header("Content-Disposition: attachment; filename=\"file.doc\";"); 
    header("Content-Length: 50688"); 

} 

readfile(SITE_PATH .'/files/file.doc'); 
+0

Zazwyczaj iPad otwiera te dokumenty (jeśli są one bezpośrednio połączone). Czy nie mogę zrobić nic, aby naśladować to zachowanie? tj. otworzyć zamiast próbować pobrać. – Nick

+0

Sprawdź zaktualizowaną odpowiedź! – Saurabh

+0

Awesome, właśnie tego szukałem, dzięki :) – Nick

0

Apple zablokowana urządzeń iOS tak, że nie można uzyskać dostępu do pliku Struktura. W związku z tym wyłączono pobieranie plików.

-1

Możesz zmusić użytkownika do wklejenia linku (z ograniczeniem czasowym w nim z powodu logowania ...) do dowolnej aplikacji innej firmy, np. GoodReader. Lub po prostu pozwól im zobaczyć plik doc w przeglądarce.

Powiązane problemy