Publier plusieurs img en même temps

Bonsoir,

j'aimerais pouvoir envoyer plusieurs photos simultanément via la popup 'medias'. Disons que 5 champs seraient bien. Et peut-être faudrait-il envisager la possibilité d'envoyer un ZIP qui s'extrairait automatiquement sur le serveur.

Tout cela dans le but de charger des photos plus rapidement que 1 à 1 et sans logiciel FTP.

Si vous avez des idées je suis preneur. Merci...

Réponses

  • cette fonction semble n'intéresser personne. Bon et bien tant pis.
  • L'idée est forte intéressante mais par exemple un plugin pourrais faire ça, car dans l'utilisation quotidienne, je ne suis pas sur que sa serve à tous.

    A bientôt.
  • Personnellement, j'uplaode mes photos via ftp par paquet et rarement grace au moduleprévu à l'intérieur de Pluxml. J'ai généralement beaucoup de photos et c'est la façon la plus rapide de le faire.
    Dans la dernière version, tu peux lancer un script pour recréer les vignettes d'un dossier, donc, à priori, faire un script pour uploader plusieurs images en même temps n'est plus très pertinent.
    Du moins, je comprend pourquoi les programmateurs ne passent pas de temps dessus et préfèrent se focaliser sur autre chose :P
  • je ne vais pas expliquer le pourquoi du comment de l'interet de cette fonction mais visiblement tu es le seul à gérer ton site FredFred et ce depuis ton ordi. Imaginons que je gère un site avec plusieurs utilisateurs et qu'en plus nous soyons en mobilité très fréquemment pour des voyages. Nous prenons des photos et éditons des articles depuis des cybercafés ou des auberges, je puis te dire qu'avoir cette fonctionnalité n'est pas accessoire lorsque tu dois charger une 30taine de photos à chaque fois et que ce n'est pas ton ordi. Mais ce n'est que mon avis.
    Dans la dernière version, tu peux lancer un script pour recréer les vignettes d'un dossier, donc, à priori, faire un script pour uploader plusieurs images en même temps n'est plus très pertinent.
    
    Je ne vois pas ce que cela vient faire dans la discussion ? Charger des images et générer des mini n'a pas grand chose à voir !

    Mais ce n'est pas grave je vais chercher de mon coté.
  • FrédéricFrédéric Member
    mars 2010 modifié
    En effet l'idée est très bonne car correspond à l'utilisation voulu à l'origine de Pluxml il me semble.

    Faudrait essayer d'adapter swfupload qui je pense serait plus facile a adapter.
  • Et voilà Mr, à tester.Chez moi c'ok faudrais revoir l'intégration css mais l'idée et là.

    swfupolad_pluxml.zip
  • Merci FRED pour cette adaptation mais les images ne se chargent pas sur le serveur. Le bouton, la selection multi image puis l'envoi fonctionnent bien mais pas le transfert visiblement. As tu une idée ? Aussi, peux me dire où changer le dossier vers lequel les images sont uploader. merci beaucoup.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Pareil pour moi, les images ne sont pas uploadées (test en local avec wamp server sous FF et Chrome)

    Sous Chrome, problème d'affichage, les champs pour uploadés sont en dessous de la partie qui liste les dossiers. Pour éviter ce souci

    dans le fichier medias.php

    remplacer
    <?php # Affichage de la zone d'upload de fichier ?>
            	<div class="fieldset flash" id="fsUploadProgress1">
    				<?php
    					if($medias=='images') echo '<span class="legend">Envoyer une image (gif, jpg, png)</span>';
    					else echo '<span class="legend">Envoyer un fichier</span>';
    				?>
    			</div>
    			<div style="padding-left: 5px;">
    				<span id="spanButtonPlaceholder1">Envoyer</span>
    				<input id="btnCancel1" type="button" value="Annuler l'envois" onclick="cancelQueue(filestype);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
    				<br /><br /> Taille maxi des fichiers : <?php echo $plxMedias->maxUpload['display'] ?>
    
    			</div>
    
    par
    <?php # Affichage de la zone d'upload de fichier ?>
            	<div style="float:right;" class="fieldset flash" id="fsUploadProgress1">
    				<?php
    					if($medias=='images') echo '<span class="legend">Envoyer une image (gif, jpg, png)</span>';
    					else echo '<span class="legend">Envoyer un fichier</span>';
    				?>
    			</div>
    			<div style="float:right;padding-left: 5px;">
    				<span id="spanButtonPlaceholder1">Envoyer</span>
    				<input id="btnCancel1" type="button" value="Annuler l'envois" onclick="cancelQueue(filestype);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
    				<br /><br /> Taille maxi des fichiers : <?php echo $plxMedias->maxUpload['display'] ?>
    
    			</div>
    
    => ajout des float:right

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • FrédéricFrédéric Member
    mars 2010 modifié
    Bon j'ai du boire car en effet l'envoi ne fonctionne pas et pour cause c'est une demo mdr.

    Donc voici le code pour medias.php:
    <?php
    
    /**
     * Gestion des images et documents
     *
     * @package PLX
     * @author  Stephane F
     **/
    
    include(dirname(__FILE__).'/prepend.php');
    
    /**
     * Méthode qui affiche les dossiers du dossier en cours
     *
     * @return    stdout
     * @author    Stephane F.
     **/
    function displayFolders($dir, $plxMedias, $view) {
    
        if(!empty($plxMedias->aContent['folders'])) {
            # Initialisation variable de boucles
            $i = 1;
            foreach ($plxMedias->aContent['folders'] as $k => $v) {
                $i++;
                echo '<div class="line-'.($i%2).'" style="padding:5px;">';
                    if($v != '../') {
                        echo '<span style="float:right;">';
                        echo '<a href="medias.php?hash='.$_SESSION['hash'].'&deldir='.urlencode($dir.$v).'&dir='.urlencode($dir).($view!=''?'&v='.$view:'').'" title="Supprimmer le dossier" onclick="Check=confirm(\'Supprimer ce dossier et son contenu ?\');if(Check==false) return false;">';
                        echo '<img src="img/delete.gif" alt="Supprimer" /></a>';
                        echo '</span>';
                    }
                    echo '<img src="img/categorie.png" width="12" height="12" alt="" />  ';
                    echo '<a href="medias.php?dir='.urlencode($k).($view!=''?'&v='.$view:'').'" title="Visualiser le contenu du dossier">'.$v.'</a><br />';
                echo '</div>';
            }
            
        } else {
            echo '<p style="padding:10px;">Aucun dossier</p>';
        }
    }
    
    /**
     * Méthode qui affiche les images du dossier en cours
     *
     * @return    stdout
     * @author    Stephane F.
     **/
    function displayImages($dir, $plxMedias, $view) {
    
        if(!empty($plxMedias->aContent['files'])) {
            foreach ($plxMedias->aContent['files'] as $k => $v) {             
                echo '<div class="bloc_gal">';            
                # Affichage miniature
                echo '<p class="thumb">';
                if(file_exists($plxMedias->path.$dir.$v['name'].'.tb')) {
                    echo '<a href="medias.php?file='.urlencode($v['name']).($view!=''?'&v='.$view:'').'&dir='.urlencode($dir).'">';
                    echo '<img src="'.$plxMedias->path.$dir.$v['name'].'.tb'.'" alt=""/><br />';
                    echo '</a>';
                }
                echo '<span>'.$v['name'].'</span><br />';
                echo '</p>';        
                # Affichage des différents liens
                echo '<p class="thumb_link">';
                # Lien pour recréer la miniature
                echo '<a href="medias.php?mini='.urlencode($v['name']).($view!=''?'&v='.$view:'').'&dir='.urlencode($dir).'&hash='.$_SESSION['hash'].'">';
                echo '<img src="img/photos.png" alt="Recréer miniature" title="Recréer la miniature" /></a>   ';
                # Lien pour voir l'image
                echo '<a href="medias.php?file='.urlencode($v['name']).($view!=''?'&v='.$view:'').'&dir='.urlencode($dir).'">';
                echo '<img src="img/eye.png" alt="Voir" title="Voir l\'image" /></a>   ';
                # Liens pour insérer dans l'article l'image ou la miniature
                if($view != '') {
                    echo '<a href="javascript:void(0)" title="Ajouter la miniature " onclick="opener.insImg(\''.$view.'\', \''.str_replace('../', '', $plxMedias->path.$dir.$v['name'].'.tb').'\')">';
                    echo '<img src="img/square_mini.png" alt="Insérer miniature" /></a> ';
                    echo '<a href="javascript:void(0)" title="Ajouter l\'image" onclick="opener.insImg(\''.$view.'\', \''.str_replace('../', '', $plxMedias->path.$dir.$v['name']).'\')">';
                    echo '<img src="img/square.png" alt="Insérer image" /></a> ';
                }
                # Déroulant pour déplacer l'image
                echo "\n".'<select name="files['.$dir.$v['name'].']">'.$plxMedias->getDirs($dir)."\n</select>\n ";
                # Lien pour supprimer l'image
                echo '<a href="medias.php?delfile='.$dir.$v['name'].'&dir='.urlencode($dir).'&hash='.$_SESSION['hash'].($view!=''?'&v='.$view:'').'" title="Supprimer l\'image" onclick="Check=confirm(\'Supprimer cette image ?\');if(Check==false) return false;"><img src="img/delete.gif" alt="Supprimer" /></a>';
                echo '</p>';                    
                echo '</div>'."\n";
            }        
        } else {
            echo '<p style="padding:10px;">Aucun fichier</p>';        
        }
    }
    
    /**
     * Méthode qui affiche les documents du dossier en cours
     *
     * @return    stdout
     * @author    Stephane F.
     **/
    function displayDocuments($dir, $plxMedias, $view) {
    
        if(!empty($plxMedias->aContent['files'])) {
            echo '<table class="table">';
            echo '<thead>';
            echo '<tr>';
            echo '<th style="width:75%">Nom du fichier</th>';
            echo '<th style="width:25%">Action</th>';
            echo '</tr>';
            echo '</thead>';
            echo '<tbody>';
            # Initialisation variable de boucles
            $i = 1;
            foreach ($plxMedias->aContent['files'] as $k => $v) { 
                $i++;
                echo '<tr class="line-'.($i%2).'">';
                echo '<td class="tc1"> '.plxUtils::strCut($v['name'],100).'</td>';
                echo '<td class="tc1"> ';
                if ($view!='') {    
                    # Icone pour lien crypté
                    echo '<a href="javascript:void(0)" title="Ajouter le lien pour télécharger le fichier" onclick="opener.insDoc(\''.$view.'\', \''.str_replace('../', '', plxEncrypt::encryptId($plxMedias->path.$dir.$v['name'])).'\', \''.$v['name'].'\', \'1\')">';
                    echo '<img src="img/lock_go.png" alt="Ajouter fichier" /></a> ';
                    # Icone pour lien en clair
                    echo '<a href="javascript:void(0)" title="Ajouter le lien du fichier" onclick="opener.insDoc(\''.$view.'\', \''.str_replace('../', '', $plxMedias->path.$dir.$v['name']).'\', \''.$v['name'].'\', \'0\')">';
                    echo '<img src="img/square.png" alt="Ajouter fichier" /></a> ';
                }
                echo "\n".'<select name="files['.$dir.$v['name'].']">'.$plxMedias->getDirs($dir).'</select> ';
                echo '<a href="medias.php?delfile='.$dir.$v['name'].'&dir='.urlencode($dir).'&hash='.$_SESSION['hash'].($view!=''?'&v='.$view:'').'" title="Supprimer le fichier" onclick="Check=confirm(\'Supprimer ce fichier ?\');if(Check==false) return false;"><img src="img/delete.gif" alt="Supprimer" /></a>';
                echo '</td>';
                echo '</tr>';
            }
            echo '</tbody>';
            echo '</table>';
        } else {
            echo '<p style="padding:10px;">Aucun fichier</p>';        
        }
    }
    # type de tri d'affichage
    $_SESSION['images_order'] = !empty($_POST['tri'])?$_POST['tri']:(!empty($_SESSION['images_order'])?$_SESSION['images_order']:'alpha');
    
    # Recherche du type de medias à afficher via la session
    $medias = (!empty($_SESSION['medias'])?$_SESSION['medias']:'images');
    if(!empty($_POST['medias'])) {
        $medias = $_POST['sel_medias'];
        $_SESSION['medias'] = $medias;
        $_GET['dir'] = '';
    }
    
    # Recherche du repertoire à afficher
    $dir = '';
    if(!empty($_GET['dir'])) {
        $dir = urldecode($_GET['dir']);
        $dir = (substr($dir, -1)!='/' AND $dir!='')?$dir.'/':$dir;
    }
    # Initialisation de la vue (chapo ou content)
    $view = !empty($_GET['v'])?$_GET['v']:'';
    
    # Nouvel objet de type plxMedias
    $plxMedias = new plxMedias(PLX_ROOT.$plxAdmin->aConf[$medias]);
    # On définit la taille des miniatures;
    $plxMedias->miniWidth = $plxAdmin->aConf['miniatures_l'];
    $plxMedias->miniHeight = $plxAdmin->aConf['miniatures_h']; 
        
    # Création d'un dossier
    if(!empty($_POST['newdir']) AND trim($_POST['newdir']) != '') {
        $msg = $plxMedias->newDir($dir, $_POST['newdir']);
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;
    } 
    # Recréation de la miniature
    elseif(!empty($_GET['mini']) AND !empty($_GET['hash']) AND $_GET['hash'] == $_SESSION['hash']) {
        $msg = $plxMedias->makeThumb($_GET['mini']);
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;    
    }
    # Suppression d'un dossier et de tout son contenu
    elseif(!empty($_GET['deldir']) AND !empty($_GET['hash']) AND $_GET['hash'] == $_SESSION['hash']) {
        $msg = $plxMedias->delDir(urldecode($_GET['deldir']));
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;
    }
    # Suppression d'un fichier
    elseif(!empty($_GET['delfile']) AND !empty($_GET['hash']) AND $_GET['hash'] == $_SESSION['hash']) {
        $msg = $plxMedias->delFile(urldecode($_GET['delfile']));
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;
    }
    # Envoi d'un fichier
    elseif(!empty($_POST['send']) AND !empty($_FILES) AND !empty($_FILES['file']['name'])) {
        $msg = $plxMedias->upload($dir, $_FILES['file'], $medias);
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;
    }
    # Déplacement d'un ou plusieurs fichiers
    elseif(!empty($_POST['change'])) {
        $msg = $plxMedias->moveFile($dir, $_POST["files"]);
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;    
    }
    # Recréer les vignettes
    elseif(!empty($_POST['thumbs'])) {
        $msg = $plxMedias->makeThumbs($dir);
        header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'').'&msg='.urlencode($msg));
        exit;    
    }
    
    # Recuperation des fichiers du dossier en cours
    $plxMedias->getDirContent($dir);
    
    ?>
    <?php
        session_start();
    
        if (count($_FILES)) {
            // Handle degraded form uploads here.  Degraded form uploads are POSTed to index.php.  SWFUpload uploads
            // are POSTed to upload.php
        }
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>Librairie - <?php echo $plxAdmin->aConf['title']; ?></title>
    <meta http-equiv="Content-Type" content="text/html; charset=<?php echo strtolower(PLX_CHARSET); ?>" />
    <?php include(dirname(__FILE__).'/style_css.php'); ?>
    <link href="swfupload.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="swfupload/swfupload.js"></script>
    <script type="text/javascript" src="js/swfupload.queue.js"></script>
    <script type="text/javascript" src="js/fileprogress.js"></script>
    <script type="text/javascript" src="js/handlers.js"></script>
    <script type="text/javascript">
            var envoitoutmedias;
    
            window.onload = function() {
                envoitoutmedias = new SWFUpload({
                    // Backend Settings
                    upload_url: "upload.php",
                    post_params: {"PHPSESSID" : "<?php echo session_id(); ?>"},
    
                    // File Upload Settings
                    file_size_limit : "102400",    // 100MB
                    file_types : "*.*",
                    file_types_description : "Tout Medias",
                    file_upload_limit : "10",
                    file_queue_limit : "0",
    
                    // Event Handler Settings (all my handlers are in the Handler.js file)
                    file_dialog_start_handler : fileDialogStart,
                    file_queued_handler : fileQueued,
                    file_queue_error_handler : fileQueueError,
                    file_dialog_complete_handler : fileDialogComplete,
                    upload_start_handler : uploadStart,
                    upload_progress_handler : uploadProgress,
                    upload_error_handler : uploadError,
                    upload_success_handler : uploadSuccess,
                    upload_complete_handler : uploadComplete,
    
                    // Button Settings
                    button_image_url : "swfupload/XPButtonUploadText_61x22.png",
                    button_placeholder_id : "spanButtonPlaceholder1",
                    button_width: 61,
                    button_height: 22,
                    
                    // Flash Settings
                    flash_url : "swfupload/swfupload.swf",
                    
    
                    custom_settings : {
                        progressTarget : "fsUploadProgress1",
                        cancelButtonId : "btnCancel1"
                    },
                    
                    // Debug Settings
                    debug: false
                });
    
             }
        </script>
    </head>
    
    <body class="popup">
        
        <?php if(!empty($_GET['file']) AND file_exists($plxMedias->path.$dir.urldecode($_GET['file']))) : # Affichage de l'image demandée ?>
        
            <p><a href="medias.php?dir=<?php echo $dir; ?><?php echo $view!=''?'&v='.$view:'' ?>" class="backupload">retour</a><br /><br /></p>
            <div style="text-align:center;">
                <img src="<?php echo $plxMedias->path.$dir.urldecode($_GET['file']) ?>" alt="" />
            </div>
        
        <?php else : # Affichage de la galerie ?>
        
            <h2>Gestion des médias</h2>    
            
            <?php (!empty($_GET['msg']))?plxUtils::showMsg(plxUtils::unSlash(urldecode(trim($_GET['msg'])))):''; ?>    
            
            <form action="medias.php?dir=<?php echo urlencode($dir); ?><?php echo $view!=''?'&v='.$view:'' ?>" method="post">
                <div style="padding: 3px 0 0 10px">
                    Librairie : <?php plxUtils::printSelect('sel_medias', array('images' => 'Images', 'documents' => 'Documents'), $medias); ?>
                    <input class="button" type="submit" name="medias" value="Ok" />
                </div>
            </form>    
            
            <form class="cssform" enctype="multipart/form-data" action="medias.php?dir=<?php echo urlencode($dir); ?><?php echo $view!=''?'&v='.$view:'' ?>" method="post">
                <fieldset style="float:left">
                    <div style="border:1px solid #333333;">
                        <div style="height:170px;overflow:auto;">
                            <?php displayFolders($dir, $plxMedias, $view); # Affichage de la liste des dossiers ?>
                        </div>
                        <?php # Affichage creation nouveau dossier ?>        
                        <div style="background-color:#EDE9E3;padding:2px;border-top:1px solid #333333;">
                            <input type="text" name="newdir" size="15" /><input type="submit" name="create" value="Créer un dossier" />
                        </div>
                    </div>
                </fieldset>
                <?php # Affichage de la zone d'upload de fichier ?>
            <table>
                <tr valign="top">
                    <td>
                        <div> 
                             <div class="fieldset flash" id="fsUploadProgress1">
                                <span class="legend">
                                <?php if($medias=='images') echo 'Envoyer des images (gif, jpg, png)';
                                                            else echo 'Envoyer des fichiers'; ?>
                                </span>
                            </div>
                            <div style="padding-left: 5px;">
                                <span id="spanButtonPlaceholder1"></span>
                                <input id="btnCancel1" type="button" value="Annuler Envoi" onclick="cancelQueue(envoitoutmedias);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
                            </div>
                         <br /><br /> Taille maxi des fichiers : <?php echo $plxMedias->maxUpload['display'] ?> 
                        </div>
                    </td>                
                </tr>
            </table>            
            </form>
    
            <?php # Affichage des fichiers ?>
            <?php $nbfiles = isset($plxMedias->aContent['files'])?sizeof($plxMedias->aContent['files']):0; ?>
            <form action="medias.php?dir=<?php echo urlencode($dir); ?><?php echo $view!=''?'&v='.$view:'' ?>" method="post">
                <div class="h2">
                    <div style="float:left; padding-top:5px"><?php echo $nbfiles ?> fichier<?php echo ($nbfiles>1?'s':'') ?> dans <?php echo './'.$dir; ?></div>
                    <div style="float:right">
                        Tri : <?php echo plxUtils::printSelect('tri', array('alpha' => 'alphabétique', 'date' => 'date décroissante'), $_SESSION['images_order']) ?>
                        <input type="submit" name="order" value="Ok" />
                    </div>
                </div>
            </form>
                    
            <div style="clear:both"></div>
            <form action="medias.php?dir=<?php echo urlencode($dir); ?><?php echo $view!=''?'&v='.$view:'' ?>" method="post">
            <?php # Affichage des fichiers ?>
            <?php $nbfiles = isset($plxMedias->aContent['files']) ? sizeof($plxMedias->aContent['files']) : 0; ?>
            <div style="overflow:auto;">
                <?php
                    if(!empty($plxMedias->aContent['files'])) {
                        # Tri par date décroissante
                        if($_SESSION['images_order'] == 'date') usort($plxMedias->aContent['files'], create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);'));
                        # Tri par ordre alphabétique croissant
                        else usort($plxMedias->aContent['files'], create_function('$a, $b', 'return strcmp($a["name"], $b["name"]);'));
                    }
                    switch($medias) {
                        case 'images':
                            displayImages($dir, $plxMedias, $view); # Affichage de la liste des images
                            break;
                        case 'documents':
                            displayDocuments($dir, $plxMedias, $view); # Affichage de la liste des documents
                            break;
                        default:
                            break;
                    }
                ?>
            </div>
            <p style="clear:both;text-align:center">
                <input type="submit" name="change" value="Appliquer les changements" />
                <?php if($medias == 'images') : ?>
                    <input type="submit" name="thumbs" value="Recréer les miniatures du dossier en cours" />
                <?php endif; ?>
            </p>
            </form>
        <?php endif; ?>
    </body>
    </html>
    
    Corrige l'affichage et laissé une seule instance du swf donc pour tout les médias pour éviter des embrouilles de code ^^.

    Et ensuite soit disant une modification du path pour l'envoi des fichier dans le fichier upload.php
    <?php
    include(dirname(__FILE__).'/medias.php');
    // Code for Session Cookie workaround
    	if (isset($_POST["PHPSESSID"])) {
    		session_id($_POST["PHPSESSID"]);
    	} else if (isset($_GET["PHPSESSID"])) {
    		session_id($_GET["PHPSESSID"]);
    	}
    
    	session_start();
    
    // Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
    	$POST_MAX_SIZE = ini_get('post_max_size');
    	$unit = strtoupper(substr($POST_MAX_SIZE, -1));
    	$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
    
    	if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
    		header("HTTP/1.1 500 Internal Server Error"); // This will trigger an uploadError event in SWFUpload
    		echo "POST exceeded maximum allowed size.";
    		exit(0);
    	}
    
    // Settings
    	// $save_path = getcwd() . "/data/";				// The path were we will save the file (getcwd() may not be reliable and should be tested in your environment)
    	$save_path = urlencode($dir);
    	$upload_name = "file";
    	$max_file_size_in_bytes = 2147483647;				// 2GB in bytes
    	$extension_whitelist = array("jpg", "gif", "png", "bpm", "zip", "rar", "tar");	// Allowed file extensions
    	$valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-';				// Characters allowed in the file name (in a Regular Expression format)
    	
    // Other variables	
    	$MAX_FILENAME_LENGTH = 260;
    	$file_name = "";
    	$file_extension = "";
    	$uploadErrors = array(
            0=>"There is no error, the file uploaded with success",
            1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",
            2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
            3=>"The uploaded file was only partially uploaded",
            4=>"No file was uploaded",
            6=>"Missing a temporary folder"
    	);
    
    
    // Validate the upload
    	if (!isset($_FILES[$upload_name])) {
    		HandleError("No upload found in \$_FILES for " . $upload_name);
    		exit(0);
    	} else if (isset($_FILES[$upload_name]["error"]) && $_FILES[$upload_name]["error"] != 0) {
    		HandleError($uploadErrors[$_FILES[$upload_name]["error"]]);
    		exit(0);
    	} else if (!isset($_FILES[$upload_name]["tmp_name"]) || !@is_uploaded_file($_FILES[$upload_name]["tmp_name"])) {
    		HandleError("Upload failed is_uploaded_file test.");
    		exit(0);
    	} else if (!isset($_FILES[$upload_name]['name'])) {
    		HandleError("File has no name.");
    		exit(0);
    	}
    	
    // Validate the file size (Warning: the largest files supported by this code is 2GB)
    	$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
    	if (!$file_size || $file_size > $max_file_size_in_bytes) {
    		HandleError("File exceeds the maximum allowed size");
    		exit(0);
    	}
    	
    	if ($file_size <= 0) {
    		HandleError("File size outside allowed lower bound");
    		exit(0);
    	}
    
    
    // Validate file name (for our purposes we'll just remove invalid characters)
    	$file_name = preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name']));
    	if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) {
    		HandleError("Invalid file name");
    		exit(0);
    	}
    
    
    // Validate that we won't over-write an existing file
    	if (file_exists($save_path . $file_name)) {
    		HandleError("File with this name already exists");
    		exit(0);
    	}
    
    // Validate file extension
    	$path_info = pathinfo($_FILES[$upload_name]['name']);
    	$file_extension = $path_info["extension"];
    	$is_valid_extension = false;
    	foreach ($extension_whitelist as $extension) {
    		if (strcasecmp($file_extension, $extension) == 0) {
    			$is_valid_extension = true;
    			break;
    		}
    	}
    	if (!$is_valid_extension) {
    		HandleError("Invalid file extension");
    		exit(0);
    	}
    
    // Validate file contents (extension and mime-type can't be trusted)
    	/*
    		Validating the file contents is OS and web server configuration dependant.  Also, it may not be reliable.
    		See the comments on this page: http://us2.php.net/fileinfo
    		
    		Also see http://72.14.253.104/search?q=cache:3YGZfcnKDrYJ:www.scanit.be/uploads/php-file-upload.pdf+php+file+command&hl=en&ct=clnk&cd=8&gl=us&client=firefox-a
    		 which describes how a PHP script can be embedded within a GIF image file.
    		
    		Therefore, no sample code will be provided here.  Research the issue, decide how much security is
    		 needed, and implement a solution that meets the needs.
    	*/
    
    
    // Process the file
    	/*
    		At this point we are ready to process the valid file. This sample code shows how to save the file. Other tasks
    		 could be done such as creating an entry in a database or generating a thumbnail.
    		 
    		Depending on your server OS and needs you may need to set the Security Permissions on the file after it has
    		been saved.
    	*/
    	if (!@move_uploaded_file($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {
    		HandleError("File could not be saved.");
    		exit(0);
    	}
    
    	exit(0);
    
    
    /* Handles the error output. This error message will be sent to the uploadSuccess event handler.  The event handler
    will have to check for any error messages and react as needed. */
    function HandleError($message) {
    	echo $message;
    }
    ?>
    
    Donc la on renseigne bien notre répertoire cible ( a voir pour que celui ci soit dynamique) soit data/documents ici.

    Mais marche toujours pas chez moi.
  • Bon encore testé avec cette fois ci un echo pour afficher que le dossier d'envoi et le bon.

    Dans medias.php j'ai donc rajouté:
    Repertoire d'envoi: <?php 
    					 include(dirname(__FILE__).'/upload.php');
    					 echo $save_path; ?>
    
    Et ca me renvoi: No upload found in $_FILES for file

    Donc la je ne sais plus, manque pas grand chose pour qu'il fonctionne ^
  • merci de chercher pour nous tous. Je n'ai pas trop le temps de chercher alors je te laisse seul. J'en suis désolé. Courage, ça va le faire.
  • Stéphane ou une autre personne du développement , pourrais dire comment passer ce code :
    medias.php?dir=<?php echo urlencode($dir); ?><?php echo $view!=''?'&v='.$view:'' ?>
    
    dans la variable $save_path svp.

    Actuellement j'ai inclus medias.php dans upload.php et ajouté $save_path = urlencode($dir);
    Mais manque le dossier actuelle que l'on parcours ....
  • StéphaneStéphane Member, Former PluXml Project Manager
    essaye avec
    $save_path = 'medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:'');
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Merci Stéphane mais toujours pas bon, le truc et qu'il veux un dossier, donc l'url ca doit pas le faire.

    Essayé aussi avec :
    $save_path = .urlencode($dir).($view!=''?'&v='.$view:'');
    
    ou encore
    $save_path = ''.urlencode($dir).($view!=''?'&v='.$view:'')'';
    
    Mais veux rien savoir le bestiau :)
  • FrédéricFrédéric Member
    mars 2010 modifié
    Bon alors j'ai laissé tombé swfupload pour intégrer uploadify.

    Dans l'archive que je vous joint, les uploads ce font dans data/documents, facilement modifiable dans le js de medias.php le temps de trouver la solution ultime pour dynamiser ce dossier.

    Uploadify_Pluxml_4.3.1.zip 59 KB

    Remplacer medias.php et envoyer le dossier "uploadify" dans core/admin.

    Naviguez entre le sélecteur de dossier "documents/images" pour rafraichir la page et afficher les fichiers fraichement envoyés.
  • FrédéricFrédéric Member
    mars 2010 modifié
    Archive à jour, cette fois j'arrête la car je ne trouve pas comment assigner le dossier dynamiquement.

    Cette ci cela envoi dans images ou documents suivant le dossier choisi.

    Pas cool sapin tremblant de demander des trucs sans te pencher dessus.

    Certes ca peux intéresser d'autre personnes met dans ce cas on s'obtient de poster, prends le pas mal ;)

    Donc pour moi la modification et déjà très bien comme çà, sinon il reste toujours l'envoi d'origine pour fichier à fichier dans le dossier précis.
  • @Fred: je m'en excuse, mais je n'ai pas le temps de regarder cela en ce moment. En effet, c'est une fonction qui m'intéresse vraiment. J'ai posté pour savoir si quelqu'un avait fait un truc dans le genre. En aucun cas je n'ai demandé que l'on développe cela pour moi. Lorsque j'aurai plus de temps je m'en occuperai. Merci cependant de t'être penché dessus.
  • Pas de soucis ;)
Connectez-vous ou Inscrivez-vous pour répondre.