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
-
- Mesaje:157
Lnk-uri de Download in Script Multi-Uploader
MarPlo
Mesaje:4343
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:
Link-urile sunt salvate in "links.htm", tot in directorul "upload/".
Si pot fi incluse intr-o pagina PHP cu acest cod:
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;
}
?>
Si pot fi incluse intr-o pagina PHP cu acest cod:
Cod: Selectaţi tot
file_get_contents('upload/links.htm');
Komfort
Mesaje:157
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
Am facut cum ai zis, apar linkurile pt downlod in "links.htm", cand dau click pe ele nu le pot downloada.
Multumesc
MarPlo
Mesaje:4343
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:
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/>';
Komfort
Mesaje:157
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?:(
MarPlo
Mesaje:4343
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"):
In adresa URL din link catre acest script se adauga numele /calea fisierului ce trebuie descarcat, la "...php?d=fisier_pt_download".
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;
}
?>
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/>';