Pagina 1 din 1

Lnk-uri de Download in Script Multi-Uploader

Scris: Mar Aug 21, 2012
de Komfort
Buna ziua,
Imi merge scrptul de upload de pe siteul dvs. ( Script Multi-Uploader ), dar nu stiu cum sa fac sa am o sectiune de unde pot downloada tot ce am uploadat, in fisierul upload.
Multumesc.

Lnk-uri de Download in Script Multi-Uploader

Scris: Mie Aug 22, 2012
de MarPlo
O solutie usoara este sa adaugi link-urile intr-un fisier, atunci cand se face Upload, apoi, in pagina unde vrei sa afisezi link-urile de download incluzi /citesti datele din acel fisier.
Incearca fisierul "uploader.php" asa:

Cod: Selectaţi tot

<?php
/***   Script de la:   https://marplo.net/php-mysql/   ***/

$updir = 'upload';    // Directorul pt. upload
$max_size = 500;      // Marimea maxima, in KiloBytes, care este permisa
$file_links = $updir. '/links.htm';        // retine link-urile pt. fisierele incarcate
$links = '';          // retine link-urile adaugate in "links.htm"

// Seteaza matricea cu tipurile de fisiere permise
$allowtype = array('bmp', 'flv', 'gif', 'jpg', 'jpeg', 'mp3', 'pdf', 'png', 'rar', 'zip');

// Creaza directorul din $updir (cu CHMOD 077), daca nu exista
if (!is_dir($updir)) mkdir($updir, 0777);

/** Incarcarea imaginii pe server **/

$rezultat = array();
// Daca este primit din formular un fisier valid
if (isset ($_FILES['file_up'])) {
  // Seteaza pt. upload fisierele primite (pot fi primite din mai multe campuri 'file_up')
  for($f=0; $f<count($_FILES['file_up']['name']); $f++) {
    // Verifica daca fisierul are tipul de extensie permis
    $split = explode('.', strtolower($_FILES['file_up']['name'][$f]));
    $type = end($split);
    if (in_array($type, $allowtype)) {
      // Verifica daca fisierul are marimea permisa
    if ($_FILES['file_up']['size'][$f]<=$max_size*1000) {
        // Daca nu sunt erori in procesul de copiere
        if ($_FILES['file_up']['error'][$f]==0) {
          // Seteaza locatia si numele pt. incarcare pe server
          $thefile = $updir . "/" . $_FILES['file_up']['name'][$f];
          // Daca fisierul nu poate fi incarcat, returneaza mesaj
          if (!move_uploaded_file ($_FILES['file_up']['tmp_name'][$f], $thefile)) {
            $rezultat[$f] = ' Fisierul nu a putut fi copiat, incercati din nou';
          }
          else {
            // Retine numele fisierului incarcat
            $rezultat[$f] = '<b>'.$_FILES['file_up']['name'][$f].'</b>';
            $links .= '<a href="' .$thefile. '" title="'. $_FILES['file_up']['name'][$f]. '">'. $_FILES['file_up']['name'][$f]. '</a><br/>';
          }
        }
      }
    else { $rezultat[$f] = 'Fisierul <b>'. $_FILES['file_up']['name'][$f]. '</b> depaseste marimea permisa de maxim <i>'. $max_size. 'KB</i>'; }
    }
    else { $rezultat[$f] = 'Fisierul <b>'. $_FILES['file_up']['name'][$f]. '</b> nu are tipul de extensie permis'; }
  }

   // Returneaza rezultatul
  $rezultat2 = implode('<br /> ', $rezultat);
  file_put_contents($file_links, $links, FILE_APPEND | LOCK_EX);
  echo '<h4>Fisiere incarcate:</h4>'.$rezultat2;
}
?>
Link-urile sunt salvate in "links.htm", tot in directorul "upload/".
Si pot fi incluse intr-o pagina PHP cu acest cod:

Cod: Selectaţi tot

file_get_contents('upload/links.htm');

Lnk-uri de Download in Script Multi-Uploader

Scris: Mie Aug 22, 2012
de Komfort
Daca sunt pe "localhost" nu pot face downlaod pt test?
Am facut cum ai zis, apar linkurile pt downlod in "links.htm", cand dau click pe ele nu le pot downloada.
Multumesc

Lnk-uri de Download in Script Multi-Uploader

Scris: Mie Aug 22, 2012
de MarPlo
Poti deschide fisierul "links.htm" cu Notepad (sau alt editor simplu) sa vezi cum sunt, ele sunt cu adresa relativa (adica fara "http://") la directorul "upload". Deci pagina in care incluzi link-urile trebuie sa fie in directorul in care e si "upload/".
Daca vrei altfel adresa link-ului, poti modifica cum stii acest cod in script:

Cod: Selectaţi tot

$links .= '<a href="' .$thefile. '" title="'. $_FILES['file_up']['name'][$f]. '">'. $_FILES['file_up']['name'][$f]. '</a><br/>';

Lnk-uri de Download in Script Multi-Uploader

Scris: Mie Aug 22, 2012
de Komfort
da..links.html este in upload...si il deschid cu notepad si vad acolo frumos linkurile toate....problema e atunci cadn intru pe localhost si incerc sa le downloadez nu pot...poate ca sunt pe localhost?:(

Lnk-uri de Download in Script Multi-Uploader

Scris: Mie Aug 22, 2012
de MarPlo
Cred ca nu cionteaza ca esti pe "localhost", probabil depinde de tipul fisierelor.
Link-ul doar deschide adresa respectiva din el. Daca e fisier care poate fi deschis in browser, nu apare pt descarcare ci incearca sa-l deschida direct.
Pt a forta download-ul e mai complicat, si nu are legatura cu acest script de upload.
Link-urile ar trebui sa deschida un alt script PHP, ca acesta (denumit "download.php", unde e si "uploder.php"):

Cod: Selectaţi tot

<?php
// Daca exista $_GET['d'], preia numele fisierului si forteaza download
if(isset($_GET['d'])) {
 $pag_dl = strip_tags(urldecode($_GET['d']));
 header('Content-type: application/force-download');
 header('Content-disposition: attachment; filename='.$pag_dl);
 readfile($pag_dl);
 exit;
}
?>
In adresa URL din link catre acest script se adauga numele /calea fisierului ce trebuie descarcat, la "...php?d=fisier_pt_download".

Cod: Selectaţi tot

$links .= '<a href="download.php?d=' .urlencode($thefile). '" title="'. $_FILES['file_up']['name'][$f]. '">'. $_FILES['file_up']['name'][$f]. '</a><br/>';