Comunitatea PHP Romania
MightyDeals

Prima pagină PHP General Cod PHP Upload fisiere pe server si schimbarea numelui

Upload fisiere pe server si schimbarea numelui

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Double_Web Avatar utilizator
Average Member

Mesaje: 149
Localitate: Bucuresti

1) Cum fac sa upload fisiere pe server? Am urmatorul cod si nu merge:

$target = "uploads/";
$target = $target . basename( $_FILES['uploadedfile']['name']);
if(!move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)) {
     die("O eroare la uploadarea fisierului! Contactati webmaster-ul !");
}


Nu imi da nici macar eroare, sa-mi spuna ca e o problema....

Si ca sa nu fac multe topicuri asemanatoare:

2) Dupa ce s-a uploadat pe sv. fisierul, cum fac sa ii schimb numele gen:
img00001.jpg , img00002.jpg, .... img00999.jpg..... etc.

Cum pot rezolva ambele probleme...?

Mesaj Joi Mai 24, 2012 11:30 am
MarPlo Senior Member

Mesaje: 706
Localitate: Braila

Salut
Daca serverul e pe linux, trebuie sa setezi permisiuni de scriere pt PHP in directorul "uploads/", CHMOD 0755 (sau 0777).
Formularul cu campul de upload trebuie sa aibe codul enctype="multipart/form-data" in <form>.
Ca sa poti vedea toate erorile si avertismente ce apar, adauga la inceputul scriptului:
ini_set('display_errors',1);
error_reporting(E_ALL);

Mesaj Joi Mai 24, 2012 5:05 pm
Double_Web Avatar utilizator
Average Member

Mesaje: 149
Localitate: Bucuresti

ok... dar, dupa ce se uploadeaza vreau sa i se schimbe si numele (sa fie unic).

Mesaj Joi Mai 24, 2012 5:22 pm
MarPlo Senior Member

Mesaje: 706
Localitate: Braila

Daca vrei nume unic, poti adauga timestamp la numele fisierului, cel mai simplu la inceput.
$target = $target. time(). basename( $_FILES['uploadedfile']['name']);

Daca vrei numarul timestamp adaugat la sfarsitul numelui, inainte de extensie, nmerge asa:
$target = $target. preg_replace('/(\.[a-z]{2,4})$/i', time()."$1", basename($_FILES['uploadedfile']['name']));

Daca vrei cum ai aratat, numerotare in ordine, e mai dificil, trebuie sa salvezi intr-un fisier ultimul nr. adaugat, si la el sa mai adaugi o unitate la fiecare upload.

Mesaj Vin Mai 25, 2012 12:27 am
CoBrA90 Average Member

Mesaje: 147
MarPlo scrie:
Daca vrei cum ai aratat, numerotare in ordine, e mai dificil, trebuie sa salvezi intr-un fisier ultimul nr. adaugat, si la el sa mai adaugi o unitate la fiecare upload.


Sau poate folosi, inainte de redenumire, functia glob:

$fisiere = glob("locatie_fisiere/*.jpg"); // sau pentru a generaliza: *.*

$nr_fisiere = count($fisiere) + 1;

avand numarul de fisiere ii vine foarte usor ca la noul fisier sa ii dea numele:


$nou_nume = "img".$nr_fisiere.".jpg"; // discutabila treaba daca vrea sa fie formatul ala km, cu multi de 0 in fata.

Mesaj Dum Apr 14, 2013 12:55 am
Google Bot New Member

Mesaje: 1

Înapoi la Cod PHP

Copyright © 2001-2013 PHP Romania Gazduire web | Haine online | Gazduire web | Campanii SMS | Gazduire Claus Web | Inregistrare Domenii | Anunturi | Jocuri cu bile
Furnizat de phpBB® Forum Software © phpBB Group
Translation/Traducere: phpBB România
Powered by Simplis