PHP - načtení a přejmenování souboru

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Hyko
Level 1.5
Level 1.5
Příspěvky: 140
Registrován: březen 14
Pohlaví: Muž
Stav:
Offline

PHP - načtení a přejmenování souboru

Příspěvekod Hyko » 08 lis 2021 17:42

Dobrý den,
poprosil bych o radu, kdy se mi na FTP ukládá snímek z kamery, ale vždy pod jiným jménem (nastavení kamery neumožňuje jiné nastavení) a potřebuji poslední snímek přejmenovat třeba snimek.jpg nejlépe v PHP. Snímky se posílají každou minutu. spouštění skriptu bych pak vyřešil asi pomoci CRONu.

Děkuji za odpovědi (nejsem programátor).

Reklama
Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1359
Registrován: červen 13
Bydliště: Jedna Velká díra ve středu Evropy :D
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP - načtení a přejmenování souboru

Příspěvekod rhsCZ » 08 lis 2021 18:06

možná něco takového

Kód: Vybrat vše

<?php
$dir = './img/';
$files = scandir($dir);
foreach($files as $file) {
   echo $file;
   if($file != "snimek.jpg")
   {
      rename($dir.$file, $dir."snimek.jpg");
   }
}
?>

pokud ti nejde o ukládání obrázků. Nevim jestli to bude fungovat. je to nástřel od oka.
je nutno opravit proměnnou $dir. Jinak "./" je současný adresář a "../" je nadřazený adresář.


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23605
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: PHP - načtení a přejmenování souboru

Příspěvekod ITCrowd » 08 lis 2021 18:12

Na to asi nebude nutné php. Mohlo by stačit napsat skript v bash, vypadal by asi nějak takhle:

Kód: Vybrat vše

mv /cesta/snimek.jpg $(date '+%Y%m%d%H%M.jpg')

Když ho budeš spouštět každou minutu, tak přejmenuje snimek.jpg na YYYYMMDDHHMM.jpg. Ale muselo by se ošetřit co udělá, když ho nenajde. Nějaký linuxák by určitě věděl.
Naposledy upravil(a) ITCrowd dne 08 lis 2021 18:30, celkem upraveno 1 x.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Hyko
Level 1.5
Level 1.5
Příspěvky: 140
Registrován: březen 14
Pohlaví: Muž
Stav:
Offline

Re: PHP - načtení a přejmenování souboru

Příspěvekod Hyko » 08 lis 2021 18:19

Jde o snimkovani z webkamery na stranky, tak bych potrebovaly aby jmeno souboru bylo stejny az se bude stranka/snimek aktualizovat

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1359
Registrován: červen 13
Bydliště: Jedna Velká díra ve středu Evropy :D
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP - načtení a přejmenování souboru

Příspěvekod rhsCZ » 08 lis 2021 18:23

Jestli to jsou stránky u nějakého hostingu, tak nejspíš nemá šanci se dostat k bash skriptům, ale cron by měl mít snad každý.


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23605
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: PHP - načtení a přejmenování souboru

Příspěvekod ITCrowd » 08 lis 2021 18:31

Ajo, já to pochopil naopak... :oops:
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Hyko
Level 1.5
Level 1.5
Příspěvky: 140
Registrován: březen 14
Pohlaví: Muž
Stav:
Offline

Re: PHP - načtení a přejmenování souboru

Příspěvekod Hyko » 08 lis 2021 22:18

rhsCZ píše:možná něco takového

Kód: Vybrat vše

<?php
$dir = './img/';
$files = scandir($dir);
foreach($files as $file) {
   echo $file;
   if($file != "snimek.jpg")
   {
      rename($dir.$file, $dir."snimek.jpg");
   }
}
?>

pokud ti nejde o ukládání obrázků. Nevim jestli to bude fungovat. je to nástřel od oka.
je nutno opravit proměnnou $dir. Jinak "./" je současný adresář a "../" je nadřazený adresář.


jen pro upřesnění ta kamera ukládá ty snímky v tomto tvaru P21110817133310.jpg jestli to pomůže.

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23605
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: PHP - načtení a přejmenování souboru

Příspěvekod ITCrowd » 08 lis 2021 23:34

Podle toho kódu je uplne jedno, jak se ten soubor jmenuje.
Soustred se na ten adresář ./img. Místo toho dopln skutečný adresář.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
cervcek
Level 5
Level 5
Příspěvky: 2241
Registrován: leden 12
Bydliště: Vrchlabí
Pohlaví: Muž
Stav:
Offline

Re: PHP - načtení a přejmenování souboru

Příspěvekod cervcek » 09 lis 2021 23:02

Na ten PHP script pozor, nebude fungovat tak, jak bylo nejspíše zamýšleno.

PHP funkce rename() přepisuje soubory, pokud už dané jméno existuje (If renaming a file and newname exists, it will be overwritten.) a ve skriptu se všechny soubory přejmenovávají na totéž statické jméno, tedy dojde k promazání všech fotek z adresáře a ponechání pouze té poslední, která projde cyklem z toho důvodu je zbytečná i ta podmínka. Asi by bylo vhodnější pojmenovávat ten soubor s nějakou dynamickou příponou, nebo nejprve přejmenovat předchozí soubor, aby nedošlo k jeho přepsání? Navíc v podmínce dochází k porovnání celého souboru (nikoliv jen názvu) se stringem "snimek.jpg", což s největší pravděpodobností nebude nikdy vyhodnoceno jinak než TRUE, takže je podmínka z dalšího důvodu zde zbytečná. Vyhledávání stringu v názvu souboru můžeš udělat např. přes funkci strpos(), nebo načíst soubor do pole a pak porovnávat příslušný index, ale to je na můj vkus zbytečně kostrbatý. Navíc není ošetřen případ, kdy scandir() nenajde soubory a vrátí FALSE. Doporučení na závěr: používej dokumentaci PHP, když funkci používáš prvně, nebo po delší době.

TO ITCrowd: bash ti při nenalezeném souboru vyhodí jen chybu do konzole, takže buď na konci příkazu chybu zahodit přes "2>/dev/null", nebo zapisovat do nějakýho logu skrze "2>>/log.txt" a dávat pozor, aby byly šipky dvě, jinak to nepřidá data na konec, ale přepíše to soubor. Pokud je ten příkaz mv uprostřed pipeliny, pak tee command místo šipek.
Děkuju za vaše názory a rady. :thumbup:

Uživatelský avatar
rhsCZ
Level 4
Level 4
Příspěvky: 1359
Registrován: červen 13
Bydliště: Jedna Velká díra ve středu Evropy :D
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP - načtení a přejmenování souboru

Příspěvekod rhsCZ » 10 lis 2021 15:06

O uchování původních obrázku nebyla řeč - autor nikde nezmínil, že by chtěl úchovávat obrázky. Jinak pokud se nic nenajde, tak se prakticky nic nestane - vyzkoušeno. jakože ta podmínka je asi zbytečná, ale přišlo mi vhodné, aby se nepřejmenovával ten samý soubor na to stejný jméno. scandir bere jen názvy nikoliv obsah, tudíž $file je jen závislá na názvu nikoliv obsahu - mě to funguje zkoušel jsem. tudíž $file byl jen string s názvem souboru. sice scandir vyhodí i "."(současný adresář) a ".."(nadřazený adresář) ale nemá to vliv na nic.

Dodatečně přidáno po 3 minutách 59 vteřinách:
menší úprava pro spokojenost :D

Kód: Vybrat vše

<?php
$dir = './img/';
$files = scandir($dir);
if($files != false)
{
foreach($files as $file) {
      echo $file."-out if<br>";
      if($file != "snimek.jpg" || $file != "." || $file != ".." )
      {
         echo $file." - in if<br>";
         rename($dir.$file, $dir."snimek.jpg");
      }
   }
}
?>


„Zeptáš-li se, budeš 5 minut vypadat jako blbec. Nezeptáš-li se, budeš blbcem po celý život.“
„Mnozí z těch, co žijí, by zasluhovali smrt. A mnozí z těch, co zemřeli, by si zasloužili žít.“ - John Ronald Reuel Tolkien
„Je lepší být nenáviděn pro to, jaký jsi, než být milován pro to, co nejsi.“ - Kurt Cobain
https://rhscz.eu
https://github.com/rhsCZ


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Přejmenovaní routeru Příloha(y)
    od Dolpi » 07 úno 2024 19:46 » v Administrace sítě
    2
    750
    od Dolpi Zobrazit poslední příspěvek
    08 úno 2024 15:30
  • JavaScript - načtení web stranky do řetězce.
    od L.L » 16 bře 2024 10:23 » v Programování a tvorba webu
    4
    2361
    od L.L Zobrazit poslední příspěvek
    20 bře 2024 07:29
  • Tisk ELD souboru
    od Jandak » 30 dub 2023 09:53 » v Problémy s hardwarem
    4
    1166
    od Grander Zobrazit poslední příspěvek
    09 čer 2023 21:31
  • Přenos souborů SD - USB flash bez PC
    od Asanoth » 29 črc 2023 17:35 » v Sítě - hardware
    11
    2097
    od Grander Zobrazit poslední příspěvek
    30 črc 2023 15:20
  • Jak hromadně změnit datum a čas souborů?
    od atari » 11 črc 2023 14:41 » v Programování a tvorba webu
    3
    2487
    od X Zobrazit poslední příspěvek
    14 črc 2023 15:17

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 30 hostů