Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    download jpg senza visualizzarli

    Ciao,
    ho provato questo script e funziona
    http://freephp.html.it/articoli/view_articolo.asp?id=73&pag=1

    , se lo conoscete potreste dirmi come fare per non visualizzare l'img cliccando su download ma fare in modo che si apra il form classico del download dopo che l'utente si è loggato e eventualmente contarli?

    Grazie per l'aiuto,

    Eosphoto.

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    mai provato, ma guarda il secondo commento di questa pagina:

    http://it2.php.net/readfile


  3. #3
    Grazie per la risposta. Sono un principiante del PHP e quello che mi hai segnalato contiene uno switch
    $filename = 'dummy.zip';
    $filename = realpath($filename);

    $file_extension = strtolower(substr(strrchr($filename,"."),1));

    switch ($file_extension) {
    case "pdf": $ctype="application/pdf"; break;
    case "exe": $ctype="application/octet-stream"; break;
    case "zip": $ctype="application/zip"; break;
    case "doc": $ctype="application/msword"; break;
    case "xls": $ctype="application/vnd.ms-excel"; break;
    case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
    case "gif": $ctype="image/gif"; break;
    case "png": $ctype="image/png"; break;
    case "jpe": case "jpeg":
    case "jpg": $ctype="image/jpg"; break;
    default: $ctype="application/force-download";
    }

    if (!file_exists($filename)) {
    die("NO FILE HERE");
    }

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private",false);
    header("Content-Type: $ctype");
    header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".@filesize($filename));
    set_time_limit(0);
    @readfile("$filename") or die("File not found.");










    come lo inserisco qui?

    <?php

    if(!isset($_GET)) $_GET = $HTTP_GET_VARS;

    if($_GET["action"] && $_GET["Id"] && is_numeric($_GET["Id"])) {

    // CONNESSIONE AL MYSQL
    @mysql_connect("host", "user", "password") or die("Connessione fallita !");

    // SELEZIONE DATABASE
    @mysql_select_db("FileBinari") or die("Selezione Database fallita !");

    switch($_GET["action"]) {

    // VISUALIZZAZIONE
    case "view" :

    $query = "SELECT DatiBinari, Type FROM file_binari WHERE Id = '" . $_GET["Id"] . "'";
    $select = @mysql_query($query) or die("Query fallita !");

    $result = @mysql_fetch_array($select);

    $data = $result["DatiBinari"];
    $type = $result["Type"];

    Header("Content-type: $type");
    echo $data;

    break;

    // DOWNLOAD
    case "download" :

    $query = "SELECT DatiBinari, Nome, Type FROM file_binari WHERE Id = '" . $_GET["Id"] . "'";
    $select = @mysql_query($query) or die("Query fallita !");

    $result = @mysql_fetch_array($select);

    $data = $result["DatiBinari"];
    $name = $result["Nome"];
    $type = $result["Type"];

    // SE IL BROWSER E' INTERNET EXPLORER
    if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) {

    header("Content-Type: application/octetstream");
    header("Content-Disposition: inline; filename=$name");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: public");

    } else {

    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=$name");
    header("Expires: 0");
    header("Pragma: no-cache");

    }

    echo $data;

    break;

    default :

    // DEFAULT CASE, NESSUNA AZIONE

    break;

    } // endswitch

    // CHIUDIAMO LA CONNESSIONE
    @mysql_close();

    } //endif

    ?>

    Ho provato anche questo http://www.devpro.it/code/72.html

    ma non succede niente. Di sicuro sbaglio qualcosa perchè pare che funzioni alla grande. Ho proprio bisogno di una mano.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    la parte che ti interessa principalmente sono tutti i comandi header().
    il resto è tutto contorno.

    Ad esempio lo switch non è altro che un blocco di controllo che a seconda del contenuto della variabile decide cosa fare (una specie di if multiplo). In questo caso viene usato per gestire la casistica di tipi di file diversi, mentre a te interessa solo la parte delle jpg.


  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    guarda, questo codice per me ha funzionato:

    codice:
    <?php
    $filename = 'immagine.jpg';
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private",false);
    header("Content-Type: image/jpg");
    header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".@filesize($filename));
    set_time_limit(0);
    @readfile("$filename") or die("File not found.");
    ?>

  6. #6
    Sai qual'è il problema (credo)? Essendo dati all'interno di un DB, la variabile $data contiene i solo i dati dell'immagine e $nome solo il nome (se dai un 'occhiata al secondo script, quello preso su html.it), per cui se nella variabile $filename ci metto $data si apre il form ma specifica che è un file sconosciuto, se metto $name scarica solo il nome, cioè dati zero.

    PS: alcune immagini le metto apposta nel DB per farle scaricare solo a chi dico io. Puoi aiutarmi?

  7. #7
    Niente da fare allora? Nessuno che mi dica almeno se nel precedente post ho scritto un'emerita e solenne c....ta? Oppure non c'è soluzione al mio problema? Eppure sono sicuro che lo è per molti.
    Ho cercato dappertutto una soluzione ma non l'ho ancora trovata. Anche se sono un fotoamatore e non un prof, avrei anche pagato una cifra onesta. È questo il problema? Purtroppo le mi e conoscenze del PHP sono ancora limitate e da solo non ce la faccio....

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma scusa se prima c'è l'istruzione

    header("Content-Type: image/jpg");

    non dovrebbe dirti che è un tipo di file sconosciuto.

    ma $data dove l'hai messo?

    io non ho mai provato, ma sostituirei il readfile con un semplice:

    echo $data;

    ciao e fammi sapere

  9. #9
    Nel primo post, secondo script, preso dai tutorial di questo sito c'è la versione originale che funziona: pagina form x upload, pag. visualizzazione del nome e size del file con link "visualizza" e "download" che vengono eseuiti da actions.php, che è quello postato. Come vedi c'è "echo $data". Cosi cliccando su visualizza mi fa vedere l'immagine dove bloccherei lo scaricamento (l'html non è visibile) con uno script JS che disattiva la famosa funzione di IE6 per lo scaricamento della foto (sai quando passi sopra col mouse e appare il rettangolino...) sperando che funzioni, e sempre con JS disabiliterei il tasto dx. del mouse. Se clicco su download mi fa vedere di nuovo l'immagine per scaricarla. Io vorrei che invece mi uscisse la schermata del download come succede per gli altri files.
    Cliccando su download dovrebbe uscire la richiesta di login e poi penserei al conteggio dei suddetti. Ma sono ancora in cerca della soluzione più importante: non mostrare l'immagine ma solo il form per il download.

  10. #10
    Ah dimenticavo, $data l'ho messa in $filename= $data. Mi ruferisco allo script che mi hai passato. Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.