Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana nazwy pliku
Forum PHP.pl > Forum > PHP
Fifi
jak zmienić nazwę pliku (np. z automatu) przenoszonego na serwer aby uniknąć jego nadpisania.
Dzięki za pomoc. Jeżeli to pytanko już padło prosze o wybaczenie.
LFH
Zmienić nazwe pliku możesz za pomocą funkcji rename(), a jeśli dodatkowo chcesz uniknąć nadpisania w przypadku gdy taki plik istnieje to możesz sprawdzac to za pomocą file_exists()
Fifi
Wszystko pięknia ładnie nie są mi obce te funkcje. Tylko problemik jest taki z formularza wysyłam fotki na serwer i mówiąc szczerze nie chciałbym sprawdzać czy plik istnieje i pamiętać nazwy plików już zapisanych.
Po jakimś czasie będzie niezła strzelanina w nazwy plików(to byłoby fajnie dla jednego usera ale gdy ich będzie więcej a nawet dużo wjęcej. Co zrobić
piczu
mozesz robic takie nazwy sha1(date()) wtedy malo prawdop ze sie powtorzy, albo numerowac kolejne wyslane pliki a przy wysylaniu sprawdzac najwiekszy numer
Fifi
dzięki za podpowiedzi. ale może powinienem zacząć od tego nie mogę astosoeać funkcji rename(maly.jpg, duzy) bo to bzdura muszę odzielić nazwę od rozszrzenia zmienić nazwę i połączyć z roaszerzeniem. Fajnie tylko jak to zrobić. Dzięki.
piczu
np. tak
  1. <?php
  2. $tablica = explode(".",$nazwa_pliku);
  3. $rozszerzenie = $tablica[count($ablica)-1];
  4. ?>

lub tak
  1. <?php
  2. $rozszerzenie = array_pop(explode(".", $nazwa_pliku))
  3. ?>
Fifi
dzięki Piczu czyli mam rozumić że to będzie coś takiego. Po otrzymaniu rozszeżenia nowy plik będzie prezentoawał się tak nowy plik= $rozszeżenie + $nowa_nazwa

nowy plik =$nazwa+$rozszeżenie (sorki)

troche narozrabiałem ale to działa

$plik="$nowy.$rozszerzenie";
piczu
tak

  1. <?php
  2.  
  3. $nazwa_pliku = "testowanazwa.jpg";
  4. echo sha1(time(null)).".".array_pop(explode(".", $nazwa_pliku));
  5.  
  6. ?>


PS. sory pomylilem sie wczesnie nie date() tylko time() oczywiscie
Fifi
witaj Piczu napisales
<?php$tablica = explode(".",$nazwa_pliku);$rozszerzenie = $tablica[count($ablica)-1];?>

nie jest to zle jezeli o tym myślałeś wystarczy zrobić tak
<?php$tablica = explode(".",$nazwa_pliku);$rozszerzenie = $tablica[0];?> i mam nazwe pliku bez rozszerzenia
a tak
<?php$tablica = explode(".",$nazwa_pliku);$rozszerzenie = $tablica[1];?> samo rozszerzenie ale dzięki za pomoc
piczu
ale przy nazwie pliku tes.test2.test.3.jpg
$rozszerzenie = $tablica[1]; nie zadziala wiec lepiej tak jak podalem
Fifi
ok masz racje przyznaje
Jak byś mi doradził w takiej sprawie. user wysyła fotke na serwer. w bazie zapisuje miejsce położenia fotki a fotki w katalogu. I Teraz czy tworzyć katalog na duże i małe fotki czy programowo manipulować rozmiarem fotki i wtedy jeden katalog.
pozdrwiam Fifi smile.gif
piczu
wszystko zalezy jaka duza ilosc zdjec bedzie wyswietlana na raz i czy strona jest czesto przegladana. jesli na malej stronce po kilka to mozna manipulowac ale jezeli bedzie to wieksza galeria to juz lepiej stworzyc miniaturki i nie obciazac serwera i tak ci radze
Fifi
Czy dobrym pomysłem jest ograniczenie Usera do przesyłania plików tylko *.jpg
piczu
dobrym wtedy nikt ci nie wysle ha serwer np. pliku php

Edit
nie musisz ograniczac do jednego ale np do plikow ze zdjeciami
Fifi
Dzięki Piczu za korespondencje.
myslisz że ograniczenie do jednego formatu (oczywiście przed wysłaniem sprawdzam format pliku) wykluczy taką możliwość wrzucenia pliku php

Witam ponownie Piczu
Teraz troszkę z innej beczki. Pytanko jest tego typu. Chciałbym na stronke móc wstawić filmik, w tym celu rejestruje się na YouTube tam wstawiam filmik i dostaje kod do wstawienia na stronke ok wszystko ładnie. ale mogę również skopiowany link wstawić do bazy i w odpowiednim momencie go wywołać, tylko jeżeli przefiltruje tekst funkcją strip_tags() szlak trafi możlwość wyświetlania danego filmiku. I jeszcze jedno to co uzyskuje to duży format filmiku a jak uzyskać dostęp do miniaturi gdzie po kliknięciu na nią mam duży format.
piczu
string strip_tags ( string $str [, string $allowable_tags] )
co do drugiego nie wiem jak uzyskac miniatury z youtube
Deen
  1. <?php
  2. $date=date("Y-m-d h:i:s");
  3.    $name=$_FILES["file"]["name"];
  4.    rename($name, $date);
  5. ?>

Niedziała:( co jest źle?

nie moge zrobić tak renambe("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt"); bo nie znam dokładnej nazwy pliku, pomożecie?
erix
Musisz znać dokładną nazwę pliku...

Poza tym, jeśli chcesz przenosić wysłany przez POST plik, to musisz użyć move_uploaded_file" title="Zobacz w manualu PHP" target="_manual, a nierename" title="Zobacz w manualu PHP" target="_manual. tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.