Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] pobieranie pliku z serwera
qwe
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 3.02.2009

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


Witam

Jestem początkujący ale próbuje zrobić stronkę gdzie będzie można uplodować plik na serwer albo ściągnąć.

Za pomocą formularza zrobiłem upload pliku do katalogu pliki

index.html

Kod
<FORM ENCTYPE="multipart/form-data" action="upload.php" method=post>
<FORM ENCTYPE="multipart/form-data" method=post>
<INPUT TYPE="FILE" NAME="plik" SIZE="50">
<br>
<INPUT TYPE="SUBMIT" VALUE="WYSLIJ">
</form>



upload.php

Kod
<?php
$uploaddir = 'pliki/';
if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$_FILES['plik']['name']))
{
echo 'Plik zostal zaladowany poprawnie <br><br>';

}
else
echo 'Blad podczas wysylania pliku.';


I mam problem jak zrobić aby za pomocą formularza wpisać nazwę pliku np plik.txt i z katalogu pliki został on ściągnięty na dysk np na dysk c

Szukałem w necie jakichś bardzo prostych skryptów (tak jak ten z wysyłaniem pliku) ale nic nie znalazłem, wszystkie skrypty są rozbudowane a mi taki nie potrzebny. Chciałbym pobierać pliki które mają max 500kb


proszę o pomoc

z góry dziękuję

Ten post edytował qwe 3.02.2009, 13:58:54
Go to the top of the page
+Quote Post
matixrr
post
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 14.04.2007

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


  1. <?php
  2.  
  3. echo'<form action="test.php" method="post">
  4.    wpisz nazwe pliku <br>
  5.    <input type="text" name="nazwa" id="nazwa" value="">
  6.    
  7.    <br><input type="submit" name="download" value="znajdz">
  8.    <input type="reset" value="wyczyść">
  9.    </form>';
  10.  
  11. if(isset($_POST['download']))
  12. {
  13.  $nazwa = $_POST['nazwa'];  
  14.    
  15.    if (!file_exists($nazwa))
  16.    {
  17.    echo("Na serwerze nie ma pliku o nazwie $nazwa");
  18.    }
  19.    else
  20.    {
  21.    echo("Plik o nazwie $nazwa został odnaleziony.<br><br>W ciągu kilku sekund powinno rozpocząć się pobieranie pliku.
  22. Jeśli pobieranie nie rozpoczęło się automatycznie, proszę kliknąć na ten <a href=$nazwa>link</a>
  23. <META HTTP-EQUIV='Refresh' CONTENT='2; URL=$nazwa'>");
  24.    }
  25.  
  26. }
  27. ?>


Plik musi być umieszczony w katalogu z którego mają być pobierane pliki.
Go to the top of the page
+Quote Post
qwe
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 3.02.2009

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


umiescilem kod w katalogu download - wyszukuje plik wyswietla

Cytat
Plik o nazwie $nazwa został odnaleziony.<br><br>W ciągu kilku sekund powinno rozpocząć się pobieranie pliku.
Jeśli pobieranie nie rozpoczęło się automatycznie, proszę kliknąć na ten <a href=$nazwa>link</a>


ale nie pobiera pliku na serwer tylko pokazuje jakohttp://www.strona.pl/download/test.txt
Go to the top of the page
+Quote Post
matixrr
post
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 14.04.2007

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


Niestety ja się poddaje. Teoretycznie miałem kod który powinien działać, ale mi za nic nie chciał zadziałać.

Tutaj daje linka jakby do rozwiazania:

http://www.google.pl/search?q=%22header(&#...-8&oe=utf-8

Oczywiscie probowalem pobierac jakby na sztywno czyli okreslajac konkretny plik jak i ze zmiennymi, ale efekt w sumie zawsze ten sam. Sciaga mi sie plik ze zrodlem strony, nic, bledna nazwa lub rozszerzenie.

Sam jestem ciekaw jak to ktos rozwiaze, moze jest osoba ktora sie juz z tym meczyla.
Go to the top of the page
+Quote Post
qwe
post
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 3.02.2009

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


matixrr ale i tak dziękuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) będę próbował jakoś to zrobić i popytam jeszcze ludzi jak coś będę miał to dam znać
Go to the top of the page
+Quote Post
matixrr
post
Post #6





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 14.04.2007

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


Ukłon należy się dla @NuLL za skrypt do sciagania.

  1. <?php
  2.  
  3. echo'<form action=test.php method=post>
  4.   <input type=text name=cos id=cos>
  5.   <br><input type=submit name=pobierz value=pobierz>
  6.   </form>';
  7.  
  8. if(isset($_POST['pobierz']))
  9. {
  10. $file = $_POST['cos'];  
  11.  
  12.    //First, see if the file exists
  13.    if (!is_file($file)) { die("<b>404 File not found!</b>"); }
  14.  
  15.    //Gather relevent info about file
  16.    $len = filesize($file);
  17.    $filename = basename($file);
  18.    $file_extension = strtolower(substr(strrchr($filename,"."),1));
  19.  
  20.    //This will set the Content-Type to the appropriate setting for the file
  21.    switch( $file_extension ) {
  22.          case "pdf": $ctype="application/pdf"; break;
  23.      case "exe": $ctype="application/octet-stream"; break;
  24.      case "zip": $ctype="application/zip"; break;
  25.      case "doc": $ctype="application/msword"; break;
  26.      case "xls": $ctype="application/vnd.ms-excel"; break;
  27.      case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  28.      case "gif": $ctype="image/gif"; break;
  29.      case "png": $ctype="image/png"; break;
  30.      case "jpeg":
  31.      case "jpg": $ctype="image/jpg"; break;
  32.      case "mp3": $ctype="audio/mpeg"; break;
  33.      case "wav": $ctype="audio/x-wav"; break;
  34.      case "mpeg":
  35.      case "mpg":
  36.      case "mpe": $ctype="video/mpeg"; break;
  37.      case "mov": $ctype="video/quicktime"; break;
  38.      case "avi": $ctype="video/x-msvideo"; break;
  39.  
  40.      //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
  41.      case "php":
  42.      case "htm":
  43.      case "html":
  44.      case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;
  45.  
  46.      default: $ctype="application/force-download";
  47.    }
  48.  
  49.    //Begin writing headers
  50.    header("Pragma: public");
  51.    header("Expires: 0");
  52.    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  53.    header("Cache-Control: public");
  54.    header("Content-Description: File Transfer");
  55.    
  56.    //Use the switch-generated Content-Type
  57.    header("Content-Type: $ctype");
  58.  
  59.    //Force the download
  60.    @$header="Content-Disposition: attachment; filename=".$filename.";";
  61.    header($header );
  62.    header("Content-Transfer-Encoding: binary");
  63.    header("Content-Length: ".$len);
  64.    @readfile($file);
  65.    exit;
  66. }
  67.  
  68. ?>


Nie wiem czy nie wymagane jest aby było output_buffering=on

Ten post edytował matixrr 3.02.2009, 21:55:10
Go to the top of the page
+Quote Post
qwe
post
Post #7





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 3.02.2009

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


matixrr wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) działa

tylko muszę przerobić aby pobierał pliki txt bo reszta rozszerzeń nie jest potrzebna

ale jeszcze raz

bardzo dziękuje za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
matixrr
post
Post #8





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 14.04.2007

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


No szkoda że teraz powiedziałeś że to ma być jeden format pliku, ale trudno (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jbc to:
  1. <?php
  2. case "txt": $ctype="text/plain"; break;
  3. ?>
Go to the top of the page
+Quote Post
qwe
post
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 3.02.2009

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


w poście napisałem

Cytat
I mam problem jak zrobić aby za pomocą formularza wpisać nazwę pliku np plik.txt i z katalogu pliki został on ściągnięty na dysk np na dysk c

Szukałem w necie jakichś bardzo prostych skryptów (tak jak ten z wysyłaniem pliku) ale nic nie znalazłem, wszystkie skrypty są rozbudowane a mi taki nie potrzebny. Chciałbym pobierać pliki które mają max 500kb



ale dziękuje i przepraszam za dodatkowy kłopot - może niezbyt konkretnie sprecyzowałem
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.09.2025 - 15:36