Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Pobieranie plików...
Kamis
post 28.09.2004, 13:00:16
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


Mam cos takiego...
  1. <?php
  2.  
  3. <a target=&#092;"_blank\" 
  4. href=&#092;"http://www.mojastrona.pl/dokwww/komunikaty/$nazwapliku\">PLIK!</a>
  5.  
  6. ?>

Gdzie $nazwapliku to jest plik *.doc (nazwa) pobierany przez formularz php, nazwa pochodzi z bazy... nie wazne.

Chodzi o to czy jest jakas mozliwosc w php by nie otwierał się ten plik w przeglądarce ale jako pobierz/ zapisz? Czy ew. da się to zrobić w zwykłym html (raczej nie) czy coś trzeba kombinować z php.

Co Wy na to?

Ten post edytował Kamis 29.09.2004, 08:05:53


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
bela
post 28.09.2004, 13:26:27
Post #2


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

Ostrzeżenie: (0%)
-----


wyślij nagłowek z odpowiednim typem mime, listę masz przyklejoną w dziale php


--------------------
Go to the top of the page
+Quote Post
Kamis
post 28.09.2004, 13:32:03
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


W pliku przesyłającym mam tak:
  1. <b><u>&nbsp<font color=\"black\">ZAŁˇCZ DOKUMENT</font>&nbsp;</u></b>
  2. <form enctype=\"multipart/form-data\" action=\"plik.php3\" method=\"POST\">
  3. <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"5000000\">
  4. <input name=\"userfile\" type=\"file\">
  5. <input name=\"dodawacz\" value=\"$nowy_id\" type=\"hidden\">
  6. <input type=\"submit\" value=\"Wyslij\">
  7. </form>

jak mam to zmienić? domyślam się ze enctype... ale jak zrobic zeby to byly pliki zarówno *.doc jak i *.xls ? Czy da sie to razem pogodzić? Czy trzeba wpisać jeszcze raz form'a ? - nie wydaje mi sie sad.gif

Ten post edytował Kamis 29.09.2004, 07:54:19


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
PHP5wymiatacz
post 29.09.2004, 07:41:34
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.09.2004

Ostrzeżenie: (0%)
-----


Wygląda na to, że masz wszystko dobrze... nie wiem jak Ci pomóc...
Go to the top of the page
+Quote Post
scanner
post 29.09.2004, 07:46:44
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat(PHP5wymiatacz @ 2004-09-29 08:41:34)
nie wiem jak Ci pomóc...

No.. Z takim nickiem to powinieenś wiedzieć.

Kamis: nagłówki w pliku wysyłającym plik do downloadu, a nie w formularzu uploadu.
Pozatym jeszcze raz nie uzyjesz BBCode, to dostaniesz odemnie warning.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Kamis
post 29.09.2004, 08:04:27
Post #6





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


scanner -> Pozmieniałem.

Mimo to nadal nie wiem jak to zrobić...

Ten pierwszy mój wpis to właśnie download. Jako form mam wstawic te mime? Nie wiem sad.gif

Ten post edytował Kamis 29.09.2004, 08:04:55


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
PHP5wymiatacz
post 29.09.2004, 10:13:28
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.09.2004

Ostrzeżenie: (0%)
-----


Cytat
scanner:No.. Z takim nickiem to powinieenś wiedzieć.


Nie ma ludzi wszechwiedzących.

Kamis: to pewnie wstawiasz gdzieś w metaznakach... ale nie pytaj się mnie jak winksmiley.jpg
Go to the top of the page
+Quote Post
scanner
post 29.09.2004, 10:48:06
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
Cytat
No.. Z takim nickiem to powinieenś wiedzieć.
Nie ma ludzi wszechwiedzących.
Ale podstawy są proste.

Kamis: zawsze jeśli dasz bezpośredni link do pliku wykona się domyślna akcja systemowa (w tym przypadku Open). Aby tego uniknąć masz dwa wyjścia:

1. "Zapisz jako..." - piszesz przy pliku informację, iż aby pobrać plik na dysk nalezy kliknąć prawym klawiaszem na link i wybrać "Zapisz element docelowy jako..."

2. Użyć pliki download.php lub innego, w którym wyślesz odpowiednie nagłowki i zawartość pliku.
Jak to zrobić znajdziesz na forum.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Kamis
post 29.09.2004, 11:20:35
Post #9





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


Czyli zrobic to jakos tak:
  1. <?php
  2.  
  3. header('Content-Type: application/costam');
  4.  
  5. ?>


no tak ale wstawiac to przed tym liniem czy jak? Da sie wpisać dwa headery? bo przecie nie wiadomo czy to doc czy xls a to sa ruzne mime.

Ad 1. Nie bedzie ok. bo baby w mojej pracy otwieraja normalnie w tym nowym oknie w przegladarce... wpisuja caly dzien a potem... naciskaja X i sie dziwia, ze im wszystko znika... a przecie jest informacja jak to robic...

Ad 2. czyt na górze


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
PHP5wymiatacz
post 29.09.2004, 11:39:42
Post #10





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.09.2004

Ostrzeżenie: (0%)
-----


scanner:
Cytat
Ale podstawy są proste.


Jasne, ale swoimi wypowiedziami ani nie pomagasz ani nic... jak wiesz jak to zrobic to po prostu napisz to a nie piszesz

Punkt 1... o tym kazdy wie.
Punkt 2... nie daje zadnej odpowiedzi... jak wiesz to napisz mu konkretnie kod jak to podstawa (pewnie jest to jedna linijka) a nie tak - poszukaj sobie... widzisz, ze chłop sobie nie radzi.

Z resztą... nie wazne... moze mnie poniosło... sorry.

Kamis: wydaje mi sie, że da sie wstawic te dwie linijki.
Go to the top of the page
+Quote Post
bregovic
post 29.09.2004, 11:45:40
Post #11





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Ok, wiec po koleji:

Masz plik z lista plikow do downloadu:
  1. ...
  2. <a href="download.php?plik=Plik 1.doc">Plik 1.doc</a>
  3. <a href="download.php?plik=Plik 2.doc">Plik 2.doc</a>
  4. ...

I masz plik download.php (skopiowane z sekcji manuala header" title="Zobacz w manualu PHP" target="_manual):
  1. <?php
  2. header('Content-type: application/msword');
  3. header('Content-Disposition: attachment; filename=\"'.$_GET['plik'].'\"');
  4. readfile($_GET['plik']);
  5. ?>

I tyle.


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
Kamis
post 29.09.2004, 13:24:29
Post #12





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


Dziękuję bardzo smile.gif

1. Dziala dziala... jeszcze jedno pytanko czy da sie jakos ustawic by nazwa sciaganego pliku (ta wpisana w okienku zapisu pliku) nie miala nazwy "download" a nazwe pliku jaka byla pierwotnie?
2. To dziala na worda a jesli dodam mime exela to jest to blad (bo potrzebuje na te dwa formaty).... czy istnieje mozliwosc dodania listy plikow ktore maja byc obslugiwane... czy dla kazdego konkretnego formatu trzeba osobny plik download.... ? da sie jakos to pogodzic w jednym pliku?

Ten post edytował Kamis 29.09.2004, 13:51:01


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
scanner
post 29.09.2004, 13:51:48
Post #13





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Przecież MIME możesz modyfikowąc w zalezności od chociażby rozszerzenia pliku.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Kamis
post 30.09.2004, 07:24:25
Post #14





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


Czyli da sie to zrobić if'em? Moglibyście pokazać to na przykładzie skryptu bregovic'a? Tak zeby lapal *doc i *xls. Wielkie dzieki za ew. pomoc.


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
PHP5wymiatacz
post 30.09.2004, 10:37:10
Post #15





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.09.2004

Ostrzeżenie: (0%)
-----


Kamis -> jak wstawisz dwa po sobie header'y to bedzie Ci brał tego ostatniego... moze z tym if'em przejdzie... mad.gif
Go to the top of the page
+Quote Post
bregovic
post 30.09.2004, 11:06:49
Post #16





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Cytat(Kamis @ 2004-09-30 07:24:25)
Moglibyście pokazać to na przykładzie skryptu bregovic'a?

A moze bys skorzystal z manuala i nauczyl sie programowac sam? My ci tu mozemy poweidzec co i jak krok po kroku - ale jesli sam nie wysuniesz inicjatywy to naprawde nic z tego nie wyjdzie winksmiley.jpg


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
Kamis
post 30.09.2004, 11:14:04
Post #17





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


Moje pytania są raczej z nie wiedzy niz z lenistwa... rolleyes.gif

Wstawiam:
  1. <?php
  2. header('Content-type: application/msword');
  3. header('Content-type: application/vnd.ms-excel');
  4. header('Content-Disposition: attachment; filename=\"'.$_GET['plik'].'\"');
  5. readfile($_GET['plik']);
  6. ?>

To nie dziala... więc robilem z if...
  1. <?php
  2. if
  3. {
  4. header('Content-type: application/msword');
  5. }
  6. else
  7. {
  8. header('Content-type: application/vnd.ms-excel');
  9. }
  10. header('Content-Disposition: attachment; filename=\"'.$_GET['plik'].'\"');
  11. readfile($_GET['plik']);
  12. ?>


i nic... bo bierze to co jest ostatnie... gdzie robię błąd?


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
bregovic
post 30.09.2004, 11:34:01
Post #18





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Nie zakladam ze jestes leniwy - bron boze. Chcialbym tylko abys wzglednie w przyszlosci troche sie rozejrzal zanim zadasz pytanie. Twoim problemem jest brak znajomosci 'if' - wiec naturalnym rozwiazaniem powinno byc wejscie na strone http://php.net/ i wpisanie w wyszukiwarke slowa 'if' i wybranie opcji 'online documentation' - znajdziesz tam gdzies link do strony http://pl.php.net/manual/pl/control-struct...l-structures.if na ktora powinienes wejsc i przeczytac, i zrozumiec, i wyprobowac.
Wtedy powinienes byc w stanie zrozumiec czego ci brakuje dalej do rozwiazania problemu...


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
Kamis
post 30.09.2004, 11:56:03
Post #19





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

Ostrzeżenie: (0%)
-----


  1. <?php 
  2. if (header('Content-type: application/msword')==header('Content-type: application/msword') )
  3. {
  4. header('Content-type: application/msword');
  5. }
  6. else
  7. {
  8. if (header('Content-type: application/vnd.ms-excel')==header('Content-type: application/vnd.ms-excel'))
  9. {
  10. header('Content-type: application/vnd.ms-excel');
  11. }
  12. else {echo(&#092;"Brak odpowiedniego formatu !\");
  13. }
  14. }
  15. header('Content-Disposition: attachment; filename=\"'.$_GET['plik'].'\"');
  16. readfile($_GET['plik']);
  17. ?>


sadsmiley02.gif można jeszcze jakąś uzyskać wskazówkę? Nie rozwiązanie...

Ten post edytował Kamis 30.09.2004, 11:57:29


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
bregovic
post 30.09.2004, 12:14:50
Post #20





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


To czego potrzebujesz, to sprawdzenie czy w nazwie pliku znajduje sie ciag '.doc' lub '.xls'.
Twoja konstrukcja if jest zbyt zagmatwana. Wystarczy ci taki algorytm:

if( nazwa pliku zawiera .doc )
{
ustaw header dla .doc
}
else
{
ustaw header dla .xls
}

Aby sprawdzic czy ciag zawiera inny ciag mozesz wykorzystac funkcje strpos" title="Zobacz w manualu PHP" target="_manual - np w ten sposob:
  1. <?php
  2.  
  3. strpos($_GET['plik'], '.doc') !== false
  4.  
  5. ?>


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 09:33