Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wysyłanie pliku na serwer - ustawianie własnej nazwy
franz87
post 15.11.2009, 01:24:20
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Witam,w książce o php znalazłem taki skrypt:

$uploaddir = 'Images/';
if(move_uploaded_file($_FILES['plik_1']['tmp_name'], $uploaddir.$_FILES['plik_1']['name'])){
print "Plik został załadowany.\n";
}
else{
print "Plik nie został załadowany\n";
}

pozwala on przesyłać pliki na serwer.
Wszystko ładnie działa pliki rzeczywiście się przesyłają,ale jest mały problem.
Chciałbym,żeby plik zawsze nazywał się $nazwa_pliku
(ta zmienna za każdym razem będzie inna...)
Nie wiem jak zmienić powyższy kod,żeby własnie plik wysłany do serwera miał nazwę określoną w zmiennej $nazwa_pliku.
Jeżeli ktoś wie jak zmodyfikować powyższy kod to proszę o odpowiedź.

Dzięki i pzdr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Fifi209
post 15.11.2009, 01:55:54
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


A jak próbowałeś kolego?

To nie jest dział gotowce.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
franz87
post 15.11.2009, 01:59:04
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Witam kolego smile.gif
A więc próbowałem na różne sposoby (php znam słabo)

['plik_1']
['tmp_name']
['name']

tu próbowałem zamienić wyraz na moją zmienną.
Pomożecie?questionmark.gif
Go to the top of the page
+Quote Post
Fifi209
post 15.11.2009, 02:06:37
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


To:
  1. $_FILES['plik_1']['name']

potraktuj pathinfo (w dokumentacji wszystko jest z przykładami)
A zrobisz to po to, aby uzyskać rozszerzenie. Potem kłania się łączenie stringów.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
franz87
post 15.11.2009, 02:12:19
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Nie ogarniam tego :/
Ten skrypt jest mi potrzebny do własnej strony,którą prowadzę.
Php znam w podstawie-a i to za dużo powiedziane.
Udało mi się połączyć zmienną z nazwą,ale ja chce żeby plik
nazywał się jak zmienna...
Go to the top of the page
+Quote Post
Blame
post 15.11.2009, 08:59:41
Post #6





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


No dobra, trochę ci to wyjaśnię. Twój skrypt:
  1. $uploaddir = 'Images/';
  2. if(move_uploaded_file($_FILES['plik_1']['tmp_name'], $uploaddir.$_FILES['plik_1']['name'])){
  3. print "Plik został załadowany.\n";
  4. }
  5. else{
  6. print "Plik nie został załadowany\n";
  7. }

To:
  1. $_FILES['plik_1']['tmp_name']

Jest to plik tymczasowy, który zauploadowałeś ze swojego komputera poprzez formularz.
A to:
  1. $uploaddir.$_FILES['plik_1']['name']

Jest to bezwzględna ścieżka do pliku, który zostanie zapisany.
Czyli tak jak mówił fifi209 potraktuj to pierwsze funkcją pathinfo, czyli na przykład:
  1. $rozszerzenie=pathinfo($_FILES['plik_1']['tmp_name']);
  2. $rozszerzenie=$rozszerzenie['extension']; //tu masz rozszerzenie tego pliku.


Teraz wystarczy to wszystko zlepić czyli:
  1. $przeznaczenie=$uploaddir.$twoja_nazwa.$rozszerzenie;

i woila!


--------------------
Go to the top of the page
+Quote Post
franz87
post 15.11.2009, 13:54:36
Post #7





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Dzięki wszystko działa,ale nie wiem czemu pliki zapisują się bez rozszerzenie?questionmark.gif?

$rozszerzenie=pathinfo($_FILES['plik_1']['tmp_name']);
$rozszerzenie=$rozszerzenie['jpg']; ///// tu daje jako rozszerzenie jpg
$uploaddir = 'Images/';
$twoja_nazwa = 'piotr';
$przeznaczenie=$uploaddir.$twoja_nazwa.$rozszerzenie;


if(move_uploaded_file($_FILES['plik_1']['tmp_name'],$przeznaczenie)){
print "Plik został załadowany.\n";
}
else{
print "Plik nie został załadowany\n";
}

questionmark.gif
Go to the top of the page
+Quote Post
deha21
post 15.11.2009, 14:18:57
Post #8





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

Ostrzeżenie: (0%)
-----


Nie zmieniaj nic w tym zapisie:
  1. $rozszerzenie=$rozszerzenie['extension'];

To odczytuje jakie jest aktualne rozszerzenie pliku więc ręcznie nie musisz go wprowadzać, skrypt sam sobie wykryje i wpisze odpowiednie. Zmień to i powinno działać.


--------------------
Go to the top of the page
+Quote Post
franz87
post 15.11.2009, 14:28:30
Post #9





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Jak mam tak jak ty napisałeś to też plik nie ma rozszerzenia.Wstawie może cały kod:

$rozszerzenie=pathinfo($_FILES['plik_1']['tmp_name']);
$rozszerzenie=$rozszerzenie['extension'];
$uploaddir = 'Images/';
$przeznaczenie=$uploaddir.$numer_pliku.$rozszerzenie;


if(move_uploaded_file($_FILES['plik_1']['tmp_name'],$przeznaczenie)){
print "Plik został załadowany.\n";
}
else{
print "Plik nie został załadowany\n";
}
Go to the top of the page
+Quote Post
deha21
post 15.11.2009, 14:35:27
Post #10





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

Ostrzeżenie: (0%)
-----


Jak wygląda zmienna $numer_pliku? Nie wpisuje ci czasem rozszerzenia w nazwie ale bez kropki - np. Images/nazwajpg?
  1. $info=pathinfo($_FILES['plik_1']['tmp_name']);
  2. $rozszerzenie=$info['extension'];
  3. $uploaddir = 'Images/';
  4. $przeznaczenie=$uploaddir.$numer_pliku."."$rozszerzenie;


--------------------
Go to the top of the page
+Quote Post
franz87
post 15.11.2009, 18:07:04
Post #11





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


$numer_pliku to cyfra.

$przeznaczenie=$uploaddir.$numer_pliku."."$rozszerzenie;
Ta linijkę kodu wypluwa mi jako błąd

Gdy zamienie ją na
$przeznaczenie=$uploaddir.$numer_pliku.$rozszerzenie;
to powstaje plik np 1tmp
poprostu do nazwy dodaje tmp

questionmark.gif

PS
Jak mam taki skrypt
$rozszerzenie=pathinfo($_FILES['plik_1']['tmp_name']);
$rozszerzenie=$rozszerzenie['extension'];
$uploaddir = 'Images/';
$przeznaczenie=$uploaddir.$numer_pliku.$rozszerzenie;

to dodaje tmp do nazwy

Dobra już działa

$przeznaczenie=$uploaddir.$numer_pliku.$rozszerzenie.$kropka.'jpg';

A macie jakiś pomysł jak zrobić ograniczanie wrzucania plików do np 3MB??

Ten post edytował franz87 15.11.2009, 16:49:44
Go to the top of the page
+Quote Post
Blame
post 15.11.2009, 19:28:58
Post #12





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Cytat(franz87 @ 15.11.2009, 18:07:04 ) *
Dobra już działa

$przeznaczenie=$uploaddir.$numer_pliku.$rozszerzenie.$kropka.'jpg';

oO I teraz zapisuje ci plik jako np. plikjpg.jpg? Powinno być
$przeznaczenie=$uploaddir.$numer_pliku.'.'.$rozszerzenie;
Cytat(franz87 @ 15.11.2009, 18:07:04 ) *
A macie jakiś pomysł jak zrobić ograniczanie wrzucania plików do np 3MB??

Sprawdzasz sobie czy $_FILES['plik1']['size'] jest mniejsze od 3145728 (3*1024*1024), jeśli tak to wysyłasz, jeśli nie dajesz komunikat.


--------------------
Go to the top of the page
+Quote Post
franz87
post 15.11.2009, 20:21:40
Post #13





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


$przeznaczenie=$uploaddir.$numer_pliku.$rozszerzenie.$kropka.'jpg';

Tak ten kod działa,równie dobrze mógłbym napisać

$kropka = ".";
$przeznaczenie=$uploaddir.$numer_pliku.$kropka.'jpg';

i też by działał bo $rozszerzenie nie działa wogóle.
Teraz elegancko zapisuje sie w folderze $uploaddir
plik o nazwie numer_pliku.jpg


A sprawdzanie wielkości już zrobiłem-jakoś do tego doszłem haha.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 10:46