Visualizzazione risultati 1 fino 9 di 9

Discussione: php upload file

  1. #1
    Guest

    Predefinito php upload file

    Sapete dirmi dove sbaglio...
    Codice PHP:
    <?php
    if(isset($_POST["carica"])){
    $nome_temporaneo = $_FILES['file']['tmp_name'];
    $nome = $_FILES['file']['name'];
    $size = $_FILES['file']['size'];
    $tipo = $_FILES['file']['type'];
    $error = $_FILES['file']['error'];
    $contenuto = addslashes(file_get_contents($nome_temporaneo));

    if(
    $size < 50000){
    if(!
    $error > 0){
    if(
    stripos($tipo,'image/') != false){
    if(!
    file_exists("/".$nome)){
    if(
    move_uploaded_file($nome,"/{nome}")){
    echo
    "
    File caricato con successo.<br>
    Nome: <b>
    {$nome}</b><br>
    Tipo: <b>
    {$tipo}</b><br>
    Dimensione: <b>
    {$size} kb</b><br>
    "
    ;
    }else{
    echo
    "C'&egrave; stato un problema durante l'upload!";
    }}else{
    echo
    "Il file è già presente sul server";
    }}else{
    echo
    "Il file non e un immagine";
    }}else{
    echo
    "C'&egrave; stato un problema durante l'upload! Codice Errore: {$error}";
    }}else{
    echo
    "Dimensioni del file eccessive, il file non può superare i 50000 bytes.";
    }}
    ?>

  2. #2
    Guest

    Predefinito

    Mmh, innanzitutto pare tu abbia sbagliato questa riga:
    Codice PHP:
    if(move_uploaded_file($nome,"/{nome}")){
    dove hai dimenticato di mettere la $ di variabile nel nuovo percorso ed inoltre il primo argomento di move_uploaded_file() deve essere il nome temporaneo, non quello originale. Quindi:
    Codice PHP:
    if(move_uploaded_file($nome_temporaneo,"/{$nome}")){
    Inoltre è sbagliata anche la directory in cui tu vuoi caricare il file: mettendo /nome_file.ext come secondo argomento PHP tenterà di andare a scrivere il file nella root del server e non nella tia root. Di conseguenza, non avendo il tuo account i permessi di root, non potrai andarci a scrivere. Stessa cosa vale per il controllo sull'esistenza o meno del file. Ti conviene creare una cartella chiamata per esempio upload in cui vai a caricare i files. Quindi il codice dovrebbe diventare:
    Codice PHP:
    <?php

    if(isset($_POST["carica"]))
    {
    $nome_temporaneo = $_FILES['file']['tmp_name'];
    $nome = $_FILES['file']['name'];
    $size = $_FILES['file']['size'];
    $tipo = $_FILES['file']['type'];
    $error = $_FILES['file']['error'];
    $contenuto = addslashes(file_get_contents($nome_temporaneo));

    if(
    $size < 50000)
    {
    if(!
    $error > 0)
    {
    if(
    stripos($tipo,'image/') != false)
    {
    if(!
    file_exists("upload/".$nome))
    {
    if(
    move_uploaded_file($nome,"upload/{$nome}"))
    {
    echo
    "
    File caricato con successo.<br>
    Nome: <b>
    {$nome}</b><br>
    Tipo: <b>
    {$tipo}</b><br>
    Dimensione: <b>
    {$size} kb</b><br>
    "
    ;
    }
    else
    {
    echo
    "C'&egrave; stato un problema durante l'upload!";
    }
    }
    else
    {
    echo
    "Il file è già presente sul server";
    }
    }
    else
    {
    echo
    "Il file non e un immagine";
    }
    }
    else
    {
    echo
    "C'&egrave; stato un problema durante l'upload! Codice Errore {$error}";
    }
    }
    else
    {
    echo
    "Dimensioni del file eccessive, il file non può superare i 50000 bytes.";
    }
    }

    ?>
    Ora dovrebbe andare (non l'ho testato).
    Ciao!

  3. #3
    Guest

    Predefinito

    Ti spiego cosa e che non va....^^
    1)la parte di codice php
    Codice PHP:
    if(stripos($tipo,'image/') !== false){
    mi da errore
    Codice PHP:
    Fatal error: Call to undefined function: stripos() in
    2)Vorrei caricare più file contemporaneamente come posso fare....

  4. #4
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Se vuoi utilizzare la funzione stripos(), devi attivare php5.

  5. #5
    Guest

    Predefinito

    si può usare qualcos'altro al posto di stripos senza attivare php 5....

    p.s
    Potresti dirmi dove sto sbagliando qui...
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    if(isset(
    $_POST["carica"])){
    #Variabili
    $dir_upload = "upload/";#directory dove effettuare l'upload
    $permessi_dir = "0700";# permessi della directory
    $dim_massima = "512000";#dimensione massima upload in kb
    $sovrascrivi_file=0;# 1=sovrascrivi i files se esistenti, 0=non sovrascrivere i files
    $check_file=1;# 1=controlla il tipo di file, 0=non controllare
    $numero = 0;
    #Variabili


    if(count($_FILES) > 0){
    $numero_file = count($_FILES['file']['tmp_name']);
    for(
    $i=0;$i<$numero_file;$i++){
    $nome_temporaneo = $_FILES['file']['tmp_name'][$i];
    $nome = $_FILES['file']['name'][$i];
    $size = $_FILES['file']['size'][$i];
    $tipo = $_FILES['file']['type'][$i];
    $error = $_FILES['file']['error'][$i];
    $contenuto = addslashes(file_get_contents($nome_temporaneo));
    }
    if(
    $size < 512000){
    if(!
    $error > 0){
    if(!
    is_dir($dir_upload)){
    if(@
    mkdir($dir_upload,permessi_dir)){
    }else{
    echo(
    "Errore nella creazione della directory <strong> upload/ </strong>");
    }}
    if(
    file_exists($dir_upload.$nome) AND $sovrascrivi_file = 0){
    if(
    move_uploaded_file($contenuto,$dir_upload.$nome)){
    echo
    "Hai caricato $numero_file file<br>";
    foreach(
    $_FILES['file']['name'] as $chiave=>$valore){
    $numero++;
    echo
    "
    (
    {$numero})Nome: <b>{$_FILES['file']['name'][$chiave]}</b><br>
    Tipo: <b>
    {$_FILES['file']['type'][$chiave]}</b><br>
    Dimensione: <b>
    {$_FILES['file']['size'][$chiave]} kb</b><br>
    "
    ;
    }}else{
    echo
    "C'&egrave; stato un problema durante l'upload!";
    }}else{
    echo
    "Il file &egrave; già presente sul server.";
    }}else{
    echo
    "C'&egrave; stato un problema durante l'upload! Codice Errore: {$error}.";
    }}else{
    echo
    "Dimensioni del file eccessive, il file non può superare i 512000 bytes.";
    }}else{
    echo
    "Nessun file &egrave; stato caricato.";
    }}
    ?>
    <form enctype="multipart/form-data" action="" name="File" method="post">
    <table id="upload_table" border="0">
    <tr>
    <td>File</td>
    <td>Carica un file:</td>
    </tr>
    <tr>
    <td>1</td>
    <td><input class="text" type="file" name="file[]"></td>
    </tr>
    <tbody ></tbody>
    <tr>
    <td><input type="submit" name="carica" value="carica"></td>
    </tr>
    </table>
    </form>
    mi dice
    Il file è già presente sul server.
    dovrebbe caricare più file ma se ne carico uno mi dice la stessa cosa....

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Il mime-type di solito è tutto in minuscolo (image/png etc..), quindi puoi usare benissimo strpos (comunque perchè non vuoi usare php5???)

    Poi una cosa che mi sembra strana è:
    Codice PHP:
    if(file_exists($dir_upload.$nome) AND $sovrascrivi_file = 0){
    Non devi assegnare $sovrascirvi_file ma controllare il suo valore:
    Codice PHP:
    if(file_exists($dir_upload.$nome) AND $sovrascrivi_file == 0) {

  7. #7
    Guest

    Predefinito

    perché essendo sto creando uno script se nel caso l'utente non abbia attivato php 5 il codice non funziona capito...

    distrazione xD
    la seconda cosa invece di controllare volevo fare che e l'utente tramite il form
    scelga lui se si o no...
    in questo modo se sono selezionati vale 1 se non sono selezionati vale 0
    Codice PHP:
    Sovrascrivi:<input type="checkbox" name="sovrascrivere" value="sovrascrivere" checked="checked">
    Controlla:<input type="checkbox" name="controlla" value="controlla" checked="checked">
    ma non so come potrei impostare le variabili
    tu pensi se usasi operatore ternario php, devo controllare se sono selezionati o no...
    Codice PHP:
    $sovrascrivi_file=0;# 1=sovrascrivi i files se esistenti, 0=non sovrascrivere i files
    $check_file=1;# 1=controlla il tipo di file, 0=non controllare

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se una checkbox non è attiva non viene inviata, quindi così dovrebbe funzionare:
    Codice PHP:
    $sovrascrivi_file=isset($_POST['sovrascrivere']) ? 1 : 0;# 1=sovrascrivi i files se esistenti, 0=non sovrascrivere i files
    $check_file=isset($_POST['controlla']) ? 1 : 0;# 1=controlla il tipo di file, 0=non controllare

  9. #9
    Guest

    Predefinito

    ok pero nel codice che ho postato ce un errore non riesco a capire perché non mi invia i file....
    dove l'errore...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •