• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wstawianie pliku do pobrania

0 głosów
718 wizyt
pytanie zadane 12 sierpnia 2021 w HTML i CSS przez poczatkujacy-prog Początkujący (410 p.)

Witam 

Mam problem Mianowice, gdy dam upload danego pliku to mi wchodzi na stronę moją download i NWN, jak zrobić, żeby pobrał się mój plik, którego wysłałem na folder upload.

muj kod upload.php

<?php 

  $httpHost = 'http://localhost/php';
$uploadDir = 'C:/xampp/htdocs/php/upload';
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = 'upload_'.uniqid().'.'.$ext;
$uploadedFilePath = $uploadDir.'/'.$filename;
$uploadedFileUrl = $httpHost.'/'.basename($uploadDir).'/'.$filename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadedFilePath)) {
	 $host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'index7.php';
   echo 'Ścieżka do pliku: '.$uploadedFilePath;
   header("Location: http://$host$uri/$extra");
  
}
?>

mój kod index7.php (ten php jest odpowiedzalny za pobieranie)

</ul>
</nav>
</section>
</header>
<main>
<article>
<section>
<div class="plik">
           <header>
		   <h3>Download</h3>
		  
		 <a href="(Ścieżka do pliku)" download> download</a>
		  
		   </header>
		   </div>
</section>

</article>
</main>
</body>
</html>

 

1
komentarz 12 sierpnia 2021 przez wizarddos Nałogowiec (27,970 p.)

Lepiej abyś kod który dostałeś najpierw (uwaga słowo klucz) ZROZUMIAŁ a nie na ślepo kopiujesz. Bo tutaj trzeba choć trochę zaadaptować to co ktoś podesłał do swoich potrzeb a nie na ślepo kopiować

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
A gdzie znajdę informacje
komentarz 12 sierpnia 2021 przez wizarddos Nałogowiec (27,970 p.)
o jakie informacje ci chodzi?
komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
Do mojego pytania
komentarz 12 sierpnia 2021 przez wizarddos Nałogowiec (27,970 p.)
Wyjaśnisz dokładniej? Bo dalej niezbyt rozumiem?
komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
Że jak dam upload to mi wchodzi na stronę download tam gdzie mam pocisk do pobrania danego pliku
komentarz 12 sierpnia 2021 przez wizarddos Nałogowiec (27,970 p.)

no to tak

nr1.

zamiast

$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'index7.php';
   echo 'Ścieżka do pliku: '.$uploadedFilePath;
   header("Location: http://$host$uri/$extra");

daj po prostu

$_SESSION['filename'] = $filename;
header("Location: 7index.php");

 

nr2

W atrybucie href linku pobierającego wstaw właściwą scieżkę czyli <?php echo 'uploads/'. $_SESSION['filename'] ?> a nie  "(ścieżka do pliku)"

 

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)

mam jakiś błąd

Warning: Undefined variable $_SESSION in C:\xampp\htdocs\php\index7.php on line 45

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\php\index7.php on line 45
uploads/ ?>

1
komentarz 12 sierpnia 2021 przez Comandeer Guru (607,330 p.)

@wizarddos, proszę na przyszłość wstawiać odpowiedź jako odpowiedź (regulamin, pkt. II.4).

1 odpowiedź

0 głosów
odpowiedź 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)

Brakuje Tobie skryptu, który by "generował" link, coś w stylu np.:

...

<section>
  <div class="plik">
    <header>
      <h3>Download</h3>           
      <a href="get_file.php?id=aaa1" download> download 1</a> 
      <a href="get_file.php?id=aaa2" download> download 2</a>
      ...           
    </header>
  </div>
</section>

...

 

możesz także po prostu pokazać zawartość całego folderu upload jak zawiera tylko pliki do pobrania.

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)

nwn coś nie działa gdy dam download to i pisze brak pliku

Not Found

The requested URL was not found on this server.


Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.0.3 Server at localhost Port 80

upload.php

<?php 

  $httpHost = 'http://localhost/php';
$uploadDir = 'C:/xampp/htdocs/php/upload';
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = 'upload_'.uniqid().'.'.$ext;
$uploadedFilePath = $uploadDir.'/'.$filename;
$uploadedFileUrl = $httpHost.'/'.basename($uploadDir).'/'.$filename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadedFilePath)) {
	 $host  = $_SERVER['HTTP_HOST'];
$_SESSION['filename'] = $filename;
header("Location: index7.php");
}
?>

kod index7.php

</header>
<main>
<article>
		  <section>
  <div class="plik">
    <header>
      <h3>Download</h3>           
      <a href="get_file.php?id=aaa1" download> download 1</a> 
      <a href="get_file.php?id=aaa2" download> download 2</a>       
    </header>
  </div>
</section>
		   </header>
		   </div>

 

komentarz 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)

get_file.php?id=aaa1

to jest tylko przykład jakby mógł wyglądać taki link, musisz stworzyć taki plik jak get_file.php (to też jest przykładowa nazwa)

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
a jak zrobic link do pobrania pliku? w byle jakich nazwach
komentarz 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)
edycja 12 sierpnia 2021 przez VBService

Może na początek zrób tak, korzystając z tego linku (co Tobie podałem): zawartość całego folderu 

 

[ edit ]

jeżeli Twój index7.php znajduje się w katalogu htdocs/php

 

<section>
  <div class="plik">
    <header>
      <h3>Download</h3>
<?php           
      $katalog = './upload/';
      foreach (glob("{$katalog}*.???") as $plik) {
          echo '<a href="'.$plik.'" download>'.basename($plik).'</a>';
      }
?>       
    </header>
  </div>
</section>

 

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
klikam i  nie działa
komentarz 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)
pokaż jaki html został wygenerowany?
komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)

klikam i nic sie nie dzieje

<?php 

  $httpHost = 'http://localhost/php';
$uploadDir = 'C:/xampp/htdocs/php/upload';
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = 'upload_'.uniqid().'.'.$ext;
$uploadedFilePath = $uploadDir.'/'.$filename;
$uploadedFileUrl = $httpHost.'/'.basename($uploadDir).'/'.$filename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadedFilePath)) {
	 $host  = $_SERVER['HTTP_HOST'];
$_SESSION['filename'] = $filename;
header("Location: index7.php");
}
?>
	  <section>
  <div class="plik">
    <header>
      <h3>Download</h3>
<?php           
      $katalog = 'C:/xampp/htdocs/php/upload';
      $linki = '';
      foreach (glob("{$katalog}*.???") as $plik) {
          echo '<a href="'.$plik.'" download>'.basename($plik).'</a>';
      }
?>       
    </header>
  </div>
</section>

 

komentarz 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)

Poprawiłem kod powyżej.

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
a czemu jest więciej plików niz tylko 1 który dałem upload
komentarz 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)

tylko się domyślam, że zawiera wszystkie jakie upload-wałeś do tej pory.

komentarz 12 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
A dało by się żeby tylko był ten plik który przesłałem
komentarz 12 sierpnia 2021 przez VBService Ekspert (256,600 p.)
edycja 12 sierpnia 2021 przez VBService

np. "filtrowanie" po dacie.

<section>
  <div class="plik">
    <header>
      <h3>Download</h3>
<?php           
      $katalog = './upload/';
      $data_dzisiaj = date('Y-m-d');
      foreach (glob("{$katalog}*.???") as $plik) {
          // np.: dzisiejsza data - pokaż wszystkie pliki, upload dzisiaj
          if ($data_dzisiaj == date('Y-m-d', filemtime($plik))) {
              echo '<a href="'.$plik.'" download>'.basename($plik).'</a>';
          }
      }
?>       
    </header>
  </div>
</section>

 

komentarz 13 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)
przywrócone 13 sierpnia 2021 przez poczatkujacy-prog
A dało by się żeby plik pokazywał się nie co dzień osobno ale co minutę?

 

Bo teraz jak w jeden dzień prześle więcej niż jeden plik to mi się pokazuje więcej a ja chciałbym tylko jeden na dany plik upload
komentarz 13 sierpnia 2021 przez poczatkujacy-prog Początkujący (410 p.)

@VBService, 

?

Podobne pytania

0 głosów
2 odpowiedzi 1,116 wizyt
pytanie zadane 20 lipca 2015 w PHP przez Adrian1999 Nałogowiec (34,570 p.)
0 głosów
4 odpowiedzi 931 wizyt
0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 19 września 2018 w PHP przez Ignobiles Obywatel (1,800 p.)

93,607 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,097 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...