Salvare una immagine che si trova su porta TCP 8080 di altro sito

Stex1967

Nuovo Utente
23 Giu 2021
7
0
1
Buongiorno a tutti,
sto cercando di salvare sul mio webserver una immagine che viene presentata su una porta (8080 e 8081) di un indirizzo web remoto .
Ho provato diversi metodi ma sembra che il fatto che si debba usare una porta diversa dalla 80, quindi dichiarandola nel URL li mandi in crisi tutti; viene salvato un file di dimensioni pari a 0.
Se la stessa immagine viene salvata in modo tale da essere disponibile sulla porta 80 allora non ci sono problemi.
Ho utilizzato sia
curl
sia
file_put_contents
ma il problema permane. Ho tentato anche a inserire degli
sleep
tra varie linee pensando che fosse necessario più tempo per creare e salvare il file, ma neppure con tempi di 5 secondi è cambiato nulla.
Qualche idea ?
Grazie e ciao
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Controlla l'header della risposta con curl...
Sarebbe consono specificare e/o caricare parte dello script per controllare, quindi evidenziare eventuali errori...
 

Stex1967

Nuovo Utente
23 Giu 2021
7
0
1
Controlla l'header della risposta con curl...
Sarebbe consono specificare e/o caricare parte dello script per controllare, quindi evidenziare eventuali errori...
Ciao macus_adi, grazie per la considerazione.
L'header della risposta è normale, il file salvato però è di zero byte.
Ho il dubbio che l'immagine generata dal restreming della webcam e presentata sulla porta 8080 abbia qualche problema, se prelevo un'altra immagine (jpg statico non generato "al volo") salvata su un altro mio sito tutto funziona.

Questo il semplice codice di test:
Codice:
<?php
// creo un file JPG in locale sul quale salverò l'immagine remota
$fp = fopen('./images/webcam/Ovada-webcam-2.jpg', 'wb');

// inizializzo cURL
$ch = curl_init();

// imposto la URL della risorsa remota da scaricare
curl_setopt($ch, CURLOPT_URL, 'http://superasso.homepc.it:8080/images/live.jpg');
//curl_setopt($ch, CURLOPT_URL, 'https://www.sestri.it/images/2020/05/01/810px-Genoa_airport__Cristoforo_Colombo_large.jpg');

// imposto che non vengano scaricati gli header
curl_setopt($ch, CURLOPT_HEADER, 0);

// imposto che il contenuto del file remoto venga scritto nel file locale (di cui specifico il puntatore)
curl_setopt($ch, CURLOPT_FILE, $fp);

// eseguo la chiamata
curl_exec($ch);

// chiudo cURL
curl_close($ch);

// chiudo il puntatore al file locale
fclose($fp);
?>


<!DOCTYPE html>
<html>
<head>
    <title><?php echo "Test.php"; ?></title>
</head>
<body>
    Sono le ore <?php echo date('H:i'); ?> del giorno <?php echo date('d/m/Y'); ?>.
    
<img src="<?= $imgUrl; ?>"/>
    Foto
    <img src='http://www.ovada.it/images/webcam/Ovada-webcam-2.jpg'/>
    
</body>
</html>
 

Stex1967

Nuovo Utente
23 Giu 2021
7
0
1
Ciao macus_adi, grazie per la considerazione.
L'header della risposta è normale, il file salvato però è di zero byte.
Ho il dubbio che l'immagine generata dal restreming della webcam e presentata sulla porta 8080 abbia qualche problema, se prelevo un'altra immagine (jpg statico non generato "al volo") salvata su un altro mio sito tutto funziona.

Questo il semplice codice di test:
Codice:
<?php
// creo un file JPG in locale sul quale salverò l'immagine remota
$fp = fopen('./images/webcam/Ovada-webcam-2.jpg', 'wb');

// inizializzo cURL
$ch = curl_init();

// imposto la URL della risorsa remota da scaricare
curl_setopt($ch, CURLOPT_URL, 'http://superasso.homepc.it:8080/images/live.jpg');
//curl_setopt($ch, CURLOPT_URL, 'https://www.sestri.it/images/2020/05/01/810px-Genoa_airport__Cristoforo_Colombo_large.jpg');

// imposto che non vengano scaricati gli header
curl_setopt($ch, CURLOPT_HEADER, 0);

// imposto che il contenuto del file remoto venga scritto nel file locale (di cui specifico il puntatore)
curl_setopt($ch, CURLOPT_FILE, $fp);

// eseguo la chiamata
curl_exec($ch);

// chiudo cURL
curl_close($ch);

// chiudo il puntatore al file locale
fclose($fp);
?>


<!DOCTYPE html>
<html>
<head>
    <title><?php echo "Test.php"; ?></title>
</head>
<body>
    Sono le ore <?php echo date('H:i'); ?> del giorno <?php echo date('d/m/Y'); ?>.
   
<img src="<?= $imgUrl; ?>"/>
    Foto
    <img src='http://www.ovada.it/images/webcam/Ovada-webcam-2.jpg'/>
   
</body>
</html>
Specifico che l'immagine "statica" jpg caricata sull'altro server (funzionamento dello script corretto) è presentata sulla porta 80 e non sulla 8080.
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Provato or ora... funziona....
prova a vedere cosa ti salva nel file.json che genera....
_Snap_venerdì 25 giugno 2021_17h31m59s_001_.png

PHP:
$files=[
    [
        'source'=>'http://superasso.homepc.it:8080/images/live.jpg',
        'result'=>[],
    ],
    [
        'source'=>'https://www.sestri.it/images/2020/05/01/810px-Genoa_airport__Cristoforo_Colombo_large.jpg',
        'result'=>[]
    ]
];
foreach ($files as $k=>$file){
    $cnt=file_get_contents($file['source']);
    $files[$k]['result']['get_content']=base64_encode($cnt);
}
file_put_contents('file.json',json_encode($files,128));
 

Stex1967

Nuovo Utente
23 Giu 2021
7
0
1
Ciao macus_adi, ho creato il file ovada.it/test.php inserendo il codice che hai suggerito, purtroppo ricevo il seguente errore:

Schermata del 2021-06-25 21-39-05.jpg


A questo punto mi sorge il dubbio che ci sia un firewall lato server che pone delle limitazioni, cosa ne pensi ?

Codice:
Test.php

<?php

$files=[
    [
        'source'=>'http://superasso.homepc.it:8080/images/live.jpg',
        'result'=>[],
    ],
    [
        'source'=>'https://www.sestri.it/images/2020/05/01/810px-Genoa_airport__Cristoforo_Colombo_large.jpg',
        'result'=>[]
    ]
];
foreach ($files as $k=>$file){
    $cnt=file_get_contents($file['source']);
    $files[$k]['result']['get_content']=base64_encode($cnt);
}
file_put_contents('file.json',json_encode($files,128));

?>

 
<!DOCTYPE html>
<html>
<head>
    <title><?php echo "Test.php"; ?></title>
</head>
<body>
    <br/>
    Sono le ore <?php echo date('H:i'); ?> del giorno <?php echo date('d/m/Y'); ?>.
    
<img src="<?= $imgUrl; ?>"/>
    Foto
    <img src='http://www.ovada.it/images/webcam/Ovada-webcam-2.jpg'/>
    
</body>
</html>
 

Stex1967

Nuovo Utente
23 Giu 2021
7
0
1
Ho avuto conferma dal provider che ospita in hosting il il sito che sono chiuse tutte le porte in ingresso e uscita, tranne quelle classiche (80, 443, 21 etc.)
Quindi direi che il problema era dovuto a questa limitazione.
Chiudo il tread.
Grazie per l'aiuto.
Ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
M [PHP] Salvare campo di una tabella in una variabile PHP 14
C Photoshop CS 6 salvare una modifica Photoshop 0
P dove si va a salvare il dbase phpmyadm una volta creato ???? Database 0
P dove si va a salvare il dbase phpmyadm una volta creato ???? Database 7
S Salvare dei dati in una determinata tabella in base al select che l'utente seleziona PHP 8
M salvare una activity e richiamarla Sviluppo app per Android 6
A Salvare completamente una pagina web di un sito qualsiasi PHP 5
G salvare più record in una tabella PHP 5
V Salvare questo valore all'interno di una variabile...come fare? PHP 10
nim salvare in una tabella i nomi dei file contenuti in cartella PHP 2
R Come salvare codice in una tabella? PHP 1
A salvare una pagina web Javascript 0
2 Salvare una pagina Javascript 0
E fpdf salvare e aprire il file PHP 4
I salvare testo chat PHP 4
B Selezionare un'immagine e salvare la selezione Photoshop 3
E Salvare immagini PHP 0
L salvare codice html in mysql PHP 3
L salvare somma con sottrazione PHP 1
M Salvare coordinate Maps nel DB PHP 2
D SALVARE "MASCHERA" + "ALLEGATO PDF" IN UN UNICO PDF MS Access 0
A Twitter aggiungere tweet a campagna esistente o salvare pubblico Social Media Marketing 0
D Salvare in diversi campi mysql con diversi ID PHP 0
D [Javascript] salvare immagine canvas - paypal Javascript 0
M Salvare JSONObject in Shared Preference Sviluppo app per Android 0
S [ASP] SALVARE VALORE SELECT OPTION SU CAMPO TABELLA ACCESS Classic ASP 9
M [PHP] FPDF Salvare su disco C locale Windows PHP 3
L [PHP] Salvare csv da form dati PHP 5
A Salvare immagine ridimensionata in MySql con GD PHP 12
G php salvare file in campo blob mysql: massimo 4MB PHP 1
M Salvare pagine web come segnalibro con istruzioni javascript Javascript 0
L Salvare posizione maps Sviluppo app per Android 0
G [PHP] SALVARE RECORD ESTRATTI DA DATABASE PHP 6
D Come salvare scelta della select "dinamica" ajax-php? Come dato php o attributo value tag option? Ajax 5
P [SOLVED] salvare il TCPDF output in mysql e rivisualizzarlo PHP 3
M Salvare i dati nel db e aprire altra pagina php PHP 7
M Form ASP su MsSQL salvare 2 campi in 1 Classic ASP 4
V [PHP] Salvare campo radio in db e leggerlo PHP 15
S [PHP] Salvare dati tabella in formato exel PHP 0
Benix89 Come salvare radio button selezionato Magento 1
Benix89 Salvare radio button selezionato PHP 2
P Come salvare il proprio diario di fb Discussioni Varie 0
P Salvare i dati restituiti dopo autenticazione OAuth2 Javascript 0
M Salvare in tabella link file importato PHP 1
F Cliccare e salvare src immagine HTML e CSS 2
M Cartella predefinita dove salvare i backup PHP 0
C Salvare il click su di un Button Sviluppo app per Android 9
Emix Salvare documenti in DB PHP 3

Discussioni simili