Leggere file contenuti in cartella e modificarne il nome

Filippo Perpetua

Nuovo Utente
9 Mag 2015
2
0
0
Gentilissimi, grazie per questo forum.

vorrei sottoporvi una piccola problematica: ho un sistema che mi genera ogni 10 minuti un file con nome random ed estensione JPG trasferendolo su una cartella remota. Il mio obbiettivo è "normalizzare" il file rinominandolo sempre con lo stesso nome per poi poterlo visualizzare.

Dunque mi sono avvalso della seguente script con la quale aggiungendo un echo mi stampa a video il nome del file con relativa estensione (preciso che in cartella c'è un solo file). Il problema è che se uso la funzione copy, o rename, per disporre del file, mi risponde sempre con un

Filename cannot be empty in /home/content/04/5953004/html/webcams/test/legge.php on line 17
come se la variabile $webcam fosse sempre vuota.

Ecco, potreste darmi una mano in questo ? Credo che manchi qualcosa in sintassi ma non riesco a capire cosa.
Molte grazie.

PHP:
<?php
//Imposto la directory da leggere
$directory = "/home/content/04/5953004/html/webcams/test/";
// Apriamo una directory e leggiamone il contenuto.
if (is_dir($directory)) {
    //Apro l'oggetto directory
    if ($directory_handle = opendir($directory)) {
        //Scorro l'oggetto fino a quando non è termnato cioè false
        while (($webcam = readdir($directory_handle)) !== false) {
            //Se l'elemento trovato è diverso da una directory
            //o dagli elementi . e .. lo visualizzo a schermo
            if((!is_dir($webcam))&($webcam!=".")&($webcam!=".."))

$nuovo = $webcam;

copy($nuovo,'file.jpg');
				
				
        }
        //Chiudo la lettura della directory.
        closedir($directory_handle);
    }
}
?>
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Ciao,
leggendo mi pare di capire che il problema principale derivi proprio dallo script.
Stai scorrendo tutti i files presenti nella cartella invece di operare una selezione casuale.

Ti consiglierei qualcosa di più compatto per adempiere allo scopo:
PHP:
$dir= '/home/content/04/5953004/html/webcams/test/';
$files = glob($dir . '*.jpg');

$random_pick = $files[array_rand($files)];

In ultimo, se devi mostarla immediatamente ha poco senso clonare la risorsa assegnandole un altro nominativo, in quanto hai già il filepath e puoi tranquillamente fare qualcosa del tipo:
PHP:
<img src="/percorso/via/url/della/cartella/<?php echo basename($random_pick); ?>">
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
@flameseeker, ho capito una cosa diversa e siccome l'ho anche provata, la posto

meglio aggiungere la directory dove si trova il file ....
ciao
Marino
PHP:
$directory = "c:/temp/"; 
if (is_dir($directory))
{ 
	if ($directory_handle = opendir($directory))
	{ 
		while (($webcam = readdir($directory_handle)) !== false)
		{ 
			if((!is_dir($webcam))&($webcam!=".")&($webcam!="..")) 
			{ 
				echo $webcam."<br />"; 

				copy($directory.$webcam, $directory.'file.jpg'); 
			}
		}
	}
        closedir($directory_handle); 
}
 

Filippo Perpetua

Nuovo Utente
9 Mag 2015
2
0
0
Molte grazie a tutti e due, Marino e @flameseeker.

Tuttavia ho dovuto usare la soluzione di Marino e per spiegare il perchè devo fare una precisazione. L'apparato di ripresa genera un file immagine JPG che non ha un nome fisso, è qualcosa randomizzato tipo 987iuhgljbv.jpg ed ogni upload cambia nome, quindi è impossibile richiamarlo via html perchè il suo nome muta di continuo, peraltro riempendo la cartella di file tutti di nomi diversi.
Di qui la necessità di cercare una soluzione da attivare via cron, che mi generi un file con un nome noto a partire dal randomizzato sorgente. E' essenziale però che quando la script venga eseguita, trovi sempre un solo file randomizzato appena caricato, quindi sarà molto utile aggiungere un

PHP:
$directorydest = "c:/dest/";

per fare in modo che la copia abbia come destinazione una cartella diversa da quella del sorgente

e poi ad ogni fine esecuzione sarà molto utile cancellare il file randomizzato sorgente in modo che alla nuova esecuzione, ci sia sempre un nuovo solo file presente. Ecco a questo proposito quale comando sarebbe utile per cancellare? Ad esempio attendendo 2 o 3 secondi prima di cancellarlo.

Sembra una banalità ma questa soluzione script è molto importante nei sistemi di sorveglianza, peraltro molto diffusi.
Grazie in anticipo.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G leggere file txt e stampare con php il contenuto a video PHP 7
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
C Leggere dati File.XMLcon PHP XML 11
M Leggere il contenuto di una cartella e memorizzare il nome file in mysql PHP 1
I [Javascript] Leggere "var" da file .js esterno (per google map) Javascript 6
H Interpretare e leggere il file log di sfc/scannow. Windows e Software 0
P leggere file .csv con javascript/jquery Javascript 11
Monital Leggere un file php contenente dati json PHP 10
Trapano Leggere un file .txt dal fondo PHP 7
Francesco Polese Leggere linea da un file ed eliminarla PHP 2
M Leggere dati da file excel in base al nome del foglio di lavoro PHP 0
napuleone type="file" leggere con js Javascript 3
M Leggere file di grandi dimensioni Java 2
D leggere il contenuto di un file di testo in un file .JS Javascript 11
L file. leggere dall'ultima riga alla prima PHP 1
L [c++] Problema leggere file txt riga per riga C/C++ 0
Trapano [risolto] Leggere da un file txt in ordine inverso PHP 2
K Leggere contenuto di una cartella quando viene aperto il file PHP 6
F leggere file xls Classic ASP 0
neo996sps [risolto] Usare PHP per leggere da file XML PHP 3
M leggere determinati punti di un file txt PHP 2
M Problema leggere su file di testo remoti PHP 11
E Leggere file tramite FTP/TLS PHP 11
A Leggere file txt e azioni su form PHP 1
L Leggere un file .txt tramite FTP e trascriverlo in una RichTextBox Visual Basic 0
G leggere file xml su server remoto Ajax 0
S leggere da file e scrivere su file un carattere o una parola alla volta Visual Basic 1
F Leggere e salvare caratteri da file di testo PHP 2
L leggere file xml dove i tag sono del tipo <stringa:altra_stringa> PHP 0
L leggere un file xml XML 1
S [C] Leggere i dati da un file e salvarli in una matrice Programmazione 1
L word: leggere i file temporanei Windows e Software 1
P leggere i file in una sottodir PHP 6
D Leggere i file di una cartella ed il loro contenuto PHP 5
LaKanka Leggere dati da file xml PHP 19
F leggere file txt zippato su altro server, come fare ? PHP 4
N leggere/sostituire/restituire file txt PHP 1
T Leggere file in directory e sottodirectory con ASP Classic ASP 3
Vale1976 leggere file da altro pc in rete PHP 2
S [VB.net 2005] Leggere file di testo come un database Programmazione 0
E Leggere file txt da altro server Classic ASP 4
G Leggere file testo lato client Javascript 1
2 Leggere una pagine che è nei file temporanei HTML e CSS 1
M Leggere in un report il valore di una casella combinata di una maschera Database 0
otto9due Leggere valore da array multidimensionale a chiavi dinamiche PHP 1
D PHP leggere cartella di Windows PHP 1
S Leggere dati da API e visualizzarli PHP 0
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
maxbossi Attenzione alle TRUFFE: Leggere attentamente!!! Annunci servizi di Social Media Marketing 0

Discussioni simili