upload image tramite url e cache

luigithen

Utente Attivo
31 Mar 2020
84
3
8
ciao ragazzi eccomi di nuovo qui con un problema che non riesco a risolvere, ho creato con successo sia il form

HTML:
  <form class="form-inline" action="logo-upload.php" method="post">
      <div class="form-group mr-4">
          <input type="text" class="form-control" name="img_url" placeholder="Inserisci Url Img">
      </div>
      <input type="submit" name="get_image" value="Salva">
  </form>

che upload
PHP:
<?php
if(isset($_POST['get_image']))
{
 $url=$_POST['img_url'];
 $data = file_get_contents($url);
 $new = 'images/logo.png';
 file_put_contents($new, $data);
 header('Location: index.php');
}
?>

il tutto funziona mi carica l'immagine nella cartella ma il mio problema è che ogni volta devo pulire la cache per poter visualizzare la nuova immagine, come posso fare per vedere subito l'immagine senza dover pulire la cache ?
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
imposta in maniera random il nome della cartella percorso url dove sarà salvato e poi mostrato al browser. Qui al posto di asterisco qualcosa a 10 cifre images/*logo.png
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
90
48
IT/SW
Qui al posto di asterisco qualcosa a 10 cifre images/*logo.png
Scusa @Hormus ed i refusi?? immagina di avere 100 attori che caricano 100 immagini di profilo a testa.... Hai praticamente 10000 immagini e ne usi solo 100? Non credo che la gestione sia corretta....




il tutto funziona mi carica l'immagine nella cartella ma il mio problema è che ogni volta devo pulire la cache per poter visualizzare la nuova immagine, come posso fare per vedere subito l'immagine senza dover pulire la cache ?

Per ovviare a questo problema ti invito a strutturare lo script in maniera tale da separare le logiche tra "Controller" e quantomeno le "View", ossia:
Il controller (valida i dati), in teoria salva l'img e torna una vista....
Nella vista basterebbe aggiungere il tag img con un parametro alla fine di "src"

PHP:
echo '<img src="'.$img.'?v='.time().'" />';
In questo modo il client ad ogni richiesta scaricherà la risorsa corretta in quanto corredata dal parametro "v" contenente il timestamp...
 
  • Like
Reactions: luigithen

luigithen

Utente Attivo
31 Mar 2020
84
3
8
grazie a tutti per le risposte.

imposta in maniera random il nome della cartella percorso url dove sarà salvato e poi mostrato al browser. Qui al posto di asterisco qualcosa a 10 cifre images/*logo.png

il nome dell'immagine è univoca quindi ogni volta che sarà caricata l'immagine tramite url questa sarà sempre logo.png e verrà sovrascritta



PHP:
echo '<img src="'.$img.'?v='.time().'" />';
In questo modo il client ad ogni richiesta scaricherà la risorsa corretta in quanto corredata dal parametro "v" contenente il timestamp...
[/QUOTE]

effettivamente, seguendo il tuo consiglio ho utilizzato questo
PHP:
<?php echo '<img src="'."images/logo.png".'?v='.time().'" />';?>

ed il tutto funziona in modo corretto
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Solitamente i CDN non riconoscono la query string di un file quindi la cache lato server sarà sempre per quel file. Comunque se utilizzo la sequenza numerica in secondi devi semplicemente recuperare v e applicare int. EDIT: sanificazione numero decimale invece di stringa manipolazione da fonte esterna :)
Anche Ajax jquery utilizza la query string timestamp per via di un vecchio bug su internet Explorer (per inibire la cache e parliamo anche semplicemente del solo testo).
Mentre non capisco quale sia il problema nell'utilizzare ad esempio uniqid in un percorso prestabilito. Quando il server dovrà recuperare tutti i file si esegue una regex php.
Mentre ovviamente se ho una lista di 100 immagini da poter caricare (quindi prestabilita) devo assegnare 100 percorsi univoci per quelle 100 immagini predefinite avrò anche il suffisso user (contraddistingue l'utente). Così i file saranno sempre 100 in memoria ma avrò più url per utente e se accede con più account avrà sempre la prima visualizzazione del file (magari con scritto il nome utente etc, ovviamente si modifica l'immagine in memoria e se ne crea un'altra).
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.333
90
48
IT/SW
Scusa @Hormus ,
occhio a quello che scrivi, ci sono imprecisioni importati e farle passare per buone non è corretto per coloro non sono ferrati in materia...

la vedo dura ad accedere al filesystem con un intero decimale
Scusa ma cosa stai dicendo? la vedo dura passare "INTERO DECIMALE" come parametro.... O intero o decimale.... Ma poi recuperare il parametro "v" per fare cosa? a che serve?

Se proprio vogliamo fare i maghetti, strutturando il "progetto" e non un FILE PHP, ogni utente ha una collezione di IMG, che vengono gestite da un TRAIT che viene aggiunto nei model che utilizzano risorse di tipo immagine...
Ogni elemento ha: collection , morph, path, name, url, temp_url, shared_url,props....

Qui siamo andati fuori... Scusate, credo che @luigithen abbia risolto....
 
Ultima modifica:

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Grazie ho corretto il messaggio precedente. Certo ti spiego, php usa diversi tipi di origini che poi vengono trasformati in numero decimale.
1)numero decimale
2)numero ottale
3)numero esadecimale
4)numero binario
5)numero decimale con underscore tra sequenza numerica da php 7.4 (dicasi intero letterale). Tutti avranno un valore numero decimale (restituiscono).
Mentre per sisistema numerico decimale si intende il sistema di numerazione posizionale a base 10.
Dopo questa premessa per me si può anche chiamare intero decimale dal momento che esiste binario decimale letterale che anch'esso impuro.
Recupero v poiché l'agente utente invia una stringa ma dal codice può solo essere numero decimale, quindi effettuo la conversione (sanificazione di una variabile che potrebbe dare noia, ovviamente per un sistema più complesso ove sia necessario memorizzare in un database e poi recuperarlo).
Non è una competizione ma creare un codice che sia sempre funzionante, purtroppo se lavori con i CDN inibiscono la query string. Vedi tu se è qualcosa che potrai inserire in un CMS (lì i CDN sono molto usati).
 
Ultima modifica:

luigithen

Utente Attivo
31 Mar 2020
84
3
8
quello che stiamo realizzando è un cms interno alla nostra azienda e si accede solo tramite password perchè la cartella stessa è protetta e tale servizio è solo per inviare il classico codice dipendente, una immagine e lo stesso form dovrà inviare (mi è stato detto ieri) anche file, non sarà online per questo per me è risolto con la soluzione fornita da macus
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
90
48
IT/SW
Replico, sperando nella conclusione...
PHP è un linguaggio interpretato, di conseguenza non può usare, interpreta l'informazione il che è un tantino differente sulla semantica utilizzata...
Stando quanto da te detto, possiamo dire che gli operatori ternari siano dei modus operandi dei sistemi operativi???? non credo, è semplicemente PHP che interpreta quella sintassi...

Detto questo, e andando avanti.... Ancora non mi è chiaro questo punto!
Recupero v poiché l'agente utente invia una stringa ma dal codice può solo essere numero decimale, quindi effettuo la conversione (sanificazione di una variabile che potrebbe dare noia, ovviamente per un sistema più complesso ove sia necessario memorizzare in un database e poi recuperarlo).
l'agente utente = UserAgent?
ma dal codice può solo essere numero decimale = Quindi passando v=macus non funzionerebbe??
memorizzare in un database e poi recuperarlo = Memorizzi i dati in GET?????

a cosa serve sanificare la stringa su una risorsa...

Vedi tu se è qualcosa che potrai inserire in un CMS (lì i CDN sono molto usati).
É possibile aggiungere un parametro custom non valutabile???
La risposta è si, e utilizzando un CMS (wp, joomla, magento, etc...) basta semplicemente aggiungere un after_middleware.

per me è risolto
Buona giornata!
 
Ultima modifica:
  • Like
Reactions: luigithen
Discussioni simili
Autore Titolo Forum Risposte Data
S [ASP.Net] [ASP] Upload Image ASP.NET 6
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
D [PHP] Upload encrypt image PHP 0
P asp upload image con resize peso senza componenti? Classic ASP 0
Cosina Creare bottone delete in form upload PHP 4
Cosina Creare bottone delete in form upload PHP 1
Cosina Upload multiplo con invio allegati per email PHP 0
Cosina Upload multiplo con archiviazione in cartella PHP 16
P Script upload immagini jQuery 0
W Non fa l'upload PHP 0
L Upload di un'immagine all'interno di un database usando php PHP 6
S Upload file senza doverlo selezionare PHP 2
P Upload foto cover e profilo jQuery 0
G Upload file error Apache 0
R Modifica codice per l'upload di più file PHP 0
S [PHP] Upload stesso file PHP 14
max1974 [Javascript] dropzone upload to server Javascript 0
F [PHP] Informazioni upload PHP 11
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
M [ASP] Upload file da form controllo Classic ASP 5
D [PHP] Upload intera cartella PHP 2
felino [PHP] Uploadify: upload immagini PHP 0
M [PHP] Nome file, upload e rinominare PHP 2
R Configurazione upload ftp su dvr IP Cam e Videosorveglianza 3
M [PHP] upload di un file esistente overwrite PHP 1
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
L [PHP] upload con errore PHP 2
V [PHP] Upload Excel in db PHP 0
jailbait [PHP] Upload immagine e stampa a schermo PHP 0
G PHP upload dati ed immagine PHP 7
C [PHP] Problema upload file (multiplo) PHP 1
P [PHP] Upload multiplo PHP 4
N [PHP] Problema upload immagini wordpress PHP 2
S [PHP] Upload file... PHP 6
michelangelopaone IPCAM Szinocam e upload FTP IP Cam e Videosorveglianza 0
razzor1994 Remote Upload Server Dedicati e VPS 0
P Barra upload file jQuery 1
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
MarcoGrazia [PHP] Upload e successiva visualizzazione immagini in DB PHP 3
V [PHP] upload di file in cartella e sua sicurezza PHP 137
T [ASP] upload file Classic ASP 3
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
Marcello.Fiore UPLOAD IMMAGINE AJAX Ajax 1
B Upload immagine con ajax post Ajax 5
V File upload.php della guida, ma ha un errore PHP 8
A Upload multiplo di immagini in PHP PHP 3
M Fare upload di file scegliendo la cartella di destinazione PHP 78

Discussioni simili