Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Tremura toata, dar nu de la ro...

Renault Android

Recomandare bicicleta e-bike 20&#...

Bing-Content removal tool
 Nu pot accesa monitorulsv.ro de l...

Cum sa elimini urmele de acnee?

Wc Geberit

Routere detinute in trecut si in ...
 Teii din fața casei

E-Mail in serie prin Excel si Out...

Modul alimentare rulou/jaluzea ex...

Recuperare fișiere dupa form...
 Aplicatii stress test RAM

Asigurare auto hibrid

Asus B550M - PC-ul nu porneste di...

Tzanca Uraganu - Inconjurat de Fe...
 

Script pentru upload-ul de fisiere (PHP)

- - - - -
  • Please log in to reply
134 replies to this topic

#1
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
TUTORIAL UPLOAD SCRIPT.
Pentru inceput voi explica modul in care se poate crea un system pentru upload-ul fisierelor pe un site cu ajutorul PHP-ului.

Pas 1:
Se creeaza un fisier cu orice nume (fie el html sau php) acesta poate fii si un fisier deja existent, in care se doreste integrarea scriptului.
In acest fisier se va afla FORM-ul care preia calea spre fisier (ma voi limita la un singur fisier pentru a fii mai usor de observant modul de lucru).

<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
	<input type="file" name="fisier" />
	<br />
	<input type="submit" name="upload" value="Uploadeaza" />
	  <input type="reset" name="resetare" value="Reseteaza" />
</form>

Explicatii:
1. form:
a. action – spune unde trimite datele culese din formular.
b. method – arata metoda de trimitere a datelor (in cazul acesta “post”)
c. enctype – spune ce tip de date sunt trimise.
d. name – numele formularului.
e. id – id-ul formularului.
2. Input-> type – specifica tipul campului :
a. file - camp fisier (un camp de tip “text” care mai are si butonul “Browse” pentru alegerea fisierului ce va fii uploadat).
b. submit – reprezinta butonul prin apasarea caruia se trimita datele catre fisierul speciaicat ca “action” (in cazul nostru upload.php).
c. reset – dupa cum ii spune si numele se refera la un buton care goleste datele din formular (este un buton suplimentar).

Pas 2:
Se mai creeaza un fisier numit “upload.php”:

<?
if ($_FILES["fisier"]["error"] > 0)
  {
	echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
	}
	else
	{
	if (file_exists("director/" . $_FILES["fisier"]["name"]))  // verificam daca fisierul exista deja pe server
	 {
		  echo "Fisierul pe care incerci sa-l uploadezi exista deja";
	   }
	else
	{
	move_uploaded_file($_FILES["fisier"]["tmp_name"], "director/".$_FILES["fisier"]["name"]);  // se muta fisierul din directorul temporar al serverului in directorul final
	 }
}
?>

NOTA: Cuvantul “director” poate fii inlocuit cu orice nume, reprezentand directorul unde vor fii adaugate fisierele uploadate.
Desigur se mai pot adauga si alte tipuri de conditii pentru limitarea tipurilor de fisiere ce pot fii uploadate sau dimensiunea lor.
Campurile care sunt pasate in array-ul $_FILES[‘fisier’] (unde “fisier” = numele dat campului de tip “file” in primul formular) sunt urmatoarele:
name – numele sub care este stocat fisierul pe computerul dumneavostra.
type – tipul fisierului.
tmp_name – numele temporar sub care este stocat fisierul pe server.
error – erorea (in mod normal 0 :D ).
size – marimea fisierului (in bytes).


Sper ca am explicat destul de clar cum sta treaba cu „upload file”.

Edited by darkangelbv, 23 March 2007 - 07:36.


#2
Bold

Bold

    Member

  • Grup: Members
  • Posts: 899
  • Înscris: 25.01.2005
Probabil ar trebui sa existe si niste filtre, sa nu se poata urca orice balarie de fisier.  In special fisiere executabile.

#3
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006

View PostBold, on Mar 23 2007, 06:13, said:

Probabil ar trebui sa existe si niste filtre, sa nu se poata urca orice balarie de fisier.  In special fisiere executabile.

Filtrele se pot pune foarte usor... spre exemplu mai jos am modificat scriptul sa nu permita upload-ul de fisiere.exe:

Quote

<?
if ($_FILES["fisier"]["error"] > 0)
  {
    echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
    }
    else
    {
if($_FILES["fisier"]["type"] != "application/x-msdos-program"){ // verificam daca fisierul este executabil

    if (file_exists("director/" . $_FILES["fisier"]["name"]))  // verificam daca fisierul exista deja pe server
     {
          echo "Fisierul pe care incerci sa-l uploadezi exista deja";
       }
    else
    {
    move_uploaded_file($_FILES["fisier"]["tmp_name"], "director/".$_FILES["fisier"]["name"]);  // se muta fisierul din directorul temporar al serverului in directorul final
     }
}
else
{
die("Fisier invalid.");
}
}
?>


#4
gr8kis

gr8kis

    Junior Member

  • Grup: Members
  • Posts: 123
  • Înscris: 15.03.2007
salutare problema la mn este .. ca dak incerc sa upl o melodie imi spune : 1. A intervenit o eroare: 1   / 2. acest fisier exista deja ... cu toate ca nu exista...ce pot face ??

#5
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
pune codul exact care il folosesti (PHP-ul si form-ul ) sa vedem cu ce te putem ajuta.

#6
cris123

cris123

    New Member

  • Grup: Members
  • Posts: 1
  • Înscris: 09.05.2007

View Postdarkangelbv, on Mar 22 2007, 18:30, said:

TUTORIAL UPLOAD SCRIPT.
Pentru inceput voi explica modul in care se poate crea un system pentru upload-ul fisierelor pe un site cu ajutorul PHP-ului.

Pas 1:
Se creeaza un fisier cu orice nume (fie el html sau php) acesta poate fii si un fisier deja existent, in care se doreste integrarea scriptului.
In acest fisier se va afla FORM-ul care preia calea spre fisier (ma voi limita la un singur fisier pentru a fii mai usor de observant modul de lucru).

<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
	<input type="file" name="fisier" />
	<br />
	<input type="submit" name="upload" value="Uploadeaza" />
	  <input type="reset" name="resetare" value="Reseteaza" />
</form>

Explicatii:
1. form:
a. action – spune unde trimite datele culese din formular.
b. method – arata metoda de trimitere a datelor (in cazul acesta “post”)
c. enctype – spune ce tip de date sunt trimise.
d. name – numele formularului.
e. id – id-ul formularului.
2. Input-> type – specifica tipul campului :
a. file - camp fisier (un camp de tip “text” care mai are si butonul “Browse” pentru alegerea fisierului ce va fii uploadat).
b. submit – reprezinta butonul prin apasarea caruia se trimita datele catre fisierul speciaicat ca “action” (in cazul nostru upload.php).
c. reset – dupa cum ii spune si numele se refera la un buton care goleste datele din formular (este un buton suplimentar).

Pas 2:
Se mai creeaza un fisier numit “upload.php”:

<?
if ($_FILES["fisier"]["error"] > 0)
  {
	echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
	}
	else
	{
	if (file_exists("director/" . $_FILES["fisier"]["name"]))  // verificam daca fisierul exista deja pe server
	 {
		  echo "Fisierul pe care incerci sa-l uploadezi exista deja";
	   }
	else
	{
	move_uploaded_file($_FILES["fisier"]["tmp_name"], "director/".$_FILES["fisier"]["name"]);  // se muta fisierul din directorul temporar al serverului in directorul final
	 }
}
?>

NOTA: Cuvantul “director” poate fii inlocuit cu orice nume, reprezentand directorul unde vor fii adaugate fisierele uploadate.
Desigur se mai pot adauga si alte tipuri de conditii pentru limitarea tipurilor de fisiere ce pot fii uploadate sau dimensiunea lor.
Campurile care sunt pasate in array-ul $_FILES[‘fisier’] (unde “fisier” = numele dat campului de tip “file” in primul formular) sunt urmatoarele:
name – numele sub care este stocat fisierul pe computerul dumneavostra.
type – tipul fisierului.
tmp_name – numele temporar sub care este stocat fisierul pe server.
error – erorea (in mod normal 0 :D ).
size – marimea fisierului (in bytes).
Sper ca am explicat destul de clar cum sta treaba cu „upload file”.



Salut,

Am vazut si eu codul pt upload de fisiere, si am incercat sa il folosesc. Imi apare o eroare la Upload, si anume:
"A intervenit o eroare: 1" si nu-mi dau seama de la ce este. Sau cateodata nu apare eroarea deloc, dar cand ma uit fisierul nu e uploadat.
Mentionez ca siteul meu exte gazduit pe lx.ro.  Acolo am creat un director anume pt pozele pe care vreau sa le pot uploada si am schimbat numele si in upload.php la director. Te  rog daca se poate sa ma ajuti
Multumesc ,
Cristina

#7
activinfo

activinfo

    Junior Member

  • Grup: Members
  • Posts: 60
  • Înscris: 12.05.2007
Salutare
Am urmat pasii de mai sus insa imi apare urmatoarea eroare:

Warning: move_uploaded_file(director/pl.png) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/activinf/public_html/up.php on line 14

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpl3PGFC' to 'director/pl.png' in /home/activinf/public_html/up.php on line 14

#8
zend112

zend112

    Junior Member

  • Grup: Members
  • Posts: 37
  • Înscris: 08.03.2006
Mai oameni da' mai cititi si manualul cu functiile nu asteptati totu mura'n'gura.

@activinfo Problema la tine este ca nu poate sa puna .png-ul acolo deoarece nu are drepturi. Schimba  CHMOD la 777 si sa vezi ca se va intampla minunea :)

#9
pstdgt

pstdgt

    Monseurizat

  • Grup: Administrators
  • Posts: 5,849
  • Înscris: 06.02.2002

View Postdarkangelbv, on Mar 22 2007, 18:30, said:

TUTORIAL UPLOAD SCRIPT.
...

Sugestie: o verificare in plus folosind functia is_uploaded_file()

#10
vp-emanuel

vp-emanuel

    Senior Member

  • Grup: Senior Members
  • Posts: 2,000
  • Înscris: 09.10.2006
Am si eu codul acesta :

<?php 
$target = "upload/"; 
$target = $target . basename( $_FILES['uploaded']['name']); 
$ok=1; 


if ($userfile_size >350000){$msg=$msg."Your uploaded file size is more than 350KB so please reduce the file size and then upload.<BR>";
$file_upload="false";}


if (!($userfile_type =="image/jpeg" OR $userfile_type=="image/gif")){$msg=$msg."Your uploaded file must be JPG or GIF. Other file types are not allowed<BR>";
$file_upload="false";}



if ($ok==0) 
{ 
Echo "Sorry your file was not uploaded"; 
} 


else 
{ 
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ 
echo "The file ". 

basename( $_FILES['uploadedfile']['name']). " has been uploaded"; 
} 
else 
{ 
echo "Sorry, there was a problem uploading your file."; 
} 
} 
?>

<form enctype="multipart/form-data" action="upload.php" method="POST">
Please choose a file: <input name="uploaded" type="file"><br>
<input type="submit" value="Upload">
</form>



si imi da aceasta eroare :


Warning: move_uploaded_file(upload/poza2.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/siteulmeu/public_html/upload.php on line 24

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpgKShYq' to 'upload/poza2.jpg' in /home/siteulmeu/public_html/upload.php on line 24
Sorry, there was a problem uploading your file.




Folderul creat este upload
Imi spune-ti si mie va rog ce am gresit ?

#11
vp-emanuel

vp-emanuel

    Senior Member

  • Grup: Senior Members
  • Posts: 2,000
  • Înscris: 09.10.2006
Am descoperit singur ce gresism :
trebuia sa dau chmod 777 folderului upload
Eu dadusem fisierului upload.php  :wallbash:
Cu toate ca functioneaza, nu functioneaza cum doream :
1) am specificat sa nu uploadeze numai fisiere cu extensia jpg si gif dar imi uploadeaza fara nici o grija si exe si png
2) am specificat sa nu imi uploadeze fisiere mai mari de 350kb, intr-adevar nu le uploadeaza dar in loc sa imi dea eroarea
Your uploaded file size is more than 350KB so please reduce the file size and then upload imi da :
Sorry, there was a problem uploading your file.
:huh:

Later Edit
Tocmai ce am uploadat un fisier de 700kb deci nu mi le filtreaza nici dupa marime.

Edited by vp-emanuel, 29 May 2007 - 19:14.


#12
vp-emanuel

vp-emanuel

    Senior Member

  • Grup: Senior Members
  • Posts: 2,000
  • Înscris: 09.10.2006
Am un script de upload (PHP) care functioneaza perfect.
Ofer 20 RON celui care imi face o mica modificare.
Astept MP.

#13
vp-emanuel

vp-emanuel

    Senior Member

  • Grup: Senior Members
  • Posts: 2,000
  • Înscris: 09.10.2006

View Postvp-emanuel, on Jun 1 2007, 20:32, said:

Am un script de upload (PHP) care functioneaza perfect.
Ofer 20 RON celui care imi face o mica modificare.
Astept MP.

Rezolvat

#14
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
Dupa ~14 ore de munca am terminat prima versiune a scriptului de upload.
este bazat 100% pe functii, deci ii puteti schimba designul foarte usor, sau sa-i integrati intr-un site deja existent.
Astept pareri si sugestii pentru versiunile viitoare.

Pentru urmatoarea versiune momentan doresc:
1. Sistem de "numarare" a download-urilor.
2. Sistem de trimitere a emailurilor in masa de catre admin (De exemplu trimiterea notificarilor despre noile facilitati oferite de site)
3. Sistem de "Star Rating" pentru fisiere.
4. Sistem de search.
5. Limitarea spatiului total ocupat de fisierele unui utilizator (Bineinteles, cu posibilitatea de a modifica din panoul de administrator limita pentru toti utilizatorii sau pentru fiecare in parte).

Dupa dezarhivarea si uploadarea fisierelor trebuie sa:
Setati permisiune 777 pe fisierul comfig.php, fisierul admin/admin.log si pe directorul upload/
Dupa instalare (Simpla accesare a locatiei unde ati copiat fisierele porneste instalarea):
Pentru siguranta stergeti directorul instalare si setati permisiune de citire pe config.php
Nu dati cu paru` daca mai gasiti greseli, avand in vedere cat este ceasul acum :rolleyes:

Attached File  upload.rar   238.32K   2436 downloads

#15
mariusc

mariusc

    New Member

  • Grup: Members
  • Posts: 6
  • Înscris: 22.08.2004

View Postdarkangelbv, on Jun 25 2007, 02:59, said:

Dupa ~14 ore de munca am terminat prima versiune a scriptului de upload.
este bazat 100% pe functii, deci ii puteti schimba designul foarte usor, sau sa-i integrati intr-un site deja existent.
Astept pareri si sugestii pentru versiunile viitoare.

Pentru urmatoarea versiune momentan doresc:
1. Sistem de "numarare" a download-urilor.
2. Sistem de trimitere a emailurilor in masa de catre admin (De exemplu trimiterea notificarilor despre noile facilitati oferite de site)
3. Sistem de "Star Rating" pentru fisiere.
4. Sistem de search.
5. Limitarea spatiului total ocupat de fisierele unui utilizator (Bineinteles, cu posibilitatea de a modifica din panoul de administrator limita pentru toti utilizatorii sau pentru fiecare in parte).

Dupa dezarhivarea si uploadarea fisierelor trebuie sa:
Setati permisiune 777 pe fisierul comfig.php, fisierul admin/admin.log si pe directorul upload/
Dupa instalare (Simpla accesare a locatiei unde ati copiat fisierele porneste instalarea):
Pentru siguranta stergeti directorul instalare si setati permisiune de citire pe config.php
Nu dati cu paru` daca mai gasiti greseli, avand in vedere cat este ceasul acum :rolleyes:

Attachment upload.rar


darkangelbv: Este super ideea ta. Chiar era nevoie de asa ceva. Felicitari!
Am incercat scriptul tau, arata bine, dar imi da mereu o eroare cand incerc sa uploadez un fisier video (.avi)
"Tipul fisierului nu este permis. video/avi"
Precizez ca am trecut si la marimea fisierului 50000 KB si la tipuri de fisere permise: avi mpg mpeg jpg

Eu am serverul pe linux si din linia de comanda am dat:
chmod 777 config.php
chmod 777 admin/admin.txt
chmod 777 upload/

vreo greseala undeva?

#16
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006
trebuie trecuta extensia (.avi) iar daca nu merge adaugi la "tipuri de fisiere permise"
 video |
si ar trebui sa mearga... in versiunile viitoare voi lasa filtru doar dupa extensie.

#17
danny_DC

danny_DC

    New Member

  • Grup: Members
  • Posts: 3
  • Înscris: 01.07.2007
Am scris si eu un cod asemanator si nu mi se muta fisierul fin folderul temporal. Daca stiti care e problema si ma puteti ajuta va raman dator :rolleyes:

#18
DarkAngelBv

DarkAngelBv

    === Proud owner of === ++++ Audi & Opel ++++

  • Grup: Senior Members
  • Posts: 12,747
  • Înscris: 24.03.2006

View Postdanny_DC, on Jul 1 2007, 20:14, said:

Am scris si eu un cod asemanator si nu mi se muta fisierul fin folderul temporal. Daca stiti care e problema si ma puteti ajuta va raman dator :rolleyes:
1. Se scrie temporar nu temporal :P
2. Ai dat CHMOD 777 la directorul unde vrei sa se faca upload-ul?

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate