IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Téléchargez Discussion :

Upload de gros fichiers par fragments (chunk)


Sujet :

Téléchargez

  1. #41
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    merci tout fonctionne mais en récupérant le nom si il y' a une vidéo du même nom je voudrai qu'elle écrase l'autre et non qu'elle se renomme.
    Car le problème est qu'elle enregistre dans la base de donnée le nom final elle enregistre celui avant qu'elle soit renommer si doublon et ça m’éviterai les doublons.

    Une idée?

    MERCI.

  2. #42
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par kate59 Voir le message
    merci tout fonctionne mais en récupérant le nom si il y' a une vidéo du même nom je voudrai qu'elle écrase l'autre et non qu'elle se renomme.
    MERCI.
    La ligne qui renomme les fichiers s'il existe déjà un fichier de même nom sur le serveur c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $destination_fichier = $up->RenommeDoublon($destination_fichier);
    Si tu préfère écraser les fichiers existants de même nom tu peux simplement supprimer cette ligne.

    Sinon plus haut dans le code de cette même page il y a un exemple qui indique comment renvoyer un message qui indique qu'un fichier de même nom existe déjà, si tu préfère éviter d'écraser les fichiers déjà existants et envoyer un message.


    Citation Envoyé par kate59 Voir le message
    Car le problème est qu'elle enregistre dans la base de donnée le nom final elle enregistre celui avant qu'elle soit renommer si doublon et ça m’éviterai les doublons.
    ça fait juste mal à la tête, était-ce sensé vouloir dire quelque chose ?

  3. #43
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    bonjour,

    je viens de transfere mon dossier localhost de upload de dossier mais j'ai une erreur :
    Echec du téléchargement. Erreur d'ouverture du fichier temporaire.

    j'ai donc mis les permissions 777 sur mes dossiers mais aucun changement.

    j'ai retelecharger les fichiers de base copier sur le site a la racine qui fonctionne très bien sur upload mais ca ne fonctionne pas.

    une idée ?
    MERCI.

  4. #44
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Et t'as pas l'impression d'avoir déjà posé cette même question ?

    Encore une fois cela n'a rien à voir avec le fonctionnement de la classe.

    Dans le même dossier que le fichier d'upload côté serveur (soit "UploadAjaxABCI_Php_Load...php" qui est par défaut dans le dossier "Php_Upload") créé un fichier php vierge dans lequel tu écris ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    header('Content-type: text/html; charset=UTF-8');
     
    // Vérification des dossiers et de leur droits en écriture et en lecture.
     
    // Indiquez le même chemin des dossiers que celui indiqué dans le fichier d'upload serveur "UploadAjaxABCI_Php_Load....php" et placer ce fichier dans le même répertoire ("Php_upload" si vous utilisez le dossier de test original). Ensuite tester directement ce fichier et agissez si besoin en conséquence.
    $verif [] = '../Destination_Upload/';;
    $verif [] = '../Destination_Upload2/';
    $verif [] = '../Upload_Temp/';
     
    foreach ($verif as $dossier)
    {
    	echo '<p style="margin-top:2em">';
    	if(is_dir($dossier))
    	{
    		echo "- Status ok : $dossier  existe<br>";
    		echo is_readable($dossier) ? "- Status ok : $dossier est accessible en lecture<br>" : "- <strong>Erreur de droit</strong> : $dossier n'est pas accessible en lecture<br>";
    		echo is_writable($dossier) ? "- Status ok : $dossier est accessible en écriture<br>" : "- <strong>Erreur de droit</strong> : $dossier n'est pas accessible en écriture<br>";
    	}
    	else echo "- <strong>Erreur</strong> : $dossier n'existe pas ou le chemin indiqué n'est pas le bon.<br>";
     
    	echo '<p>';
    }
    ?>
    Il faut juste remplacer les valeurs de $verif [] par celles que tu as indiquées dans le script d'upload "UploadAjaxABCI_Php_Load....php".

    Ensuite lance directement ce script pour voir si tout est ok, sinon agis en conséquence.

  5. #45
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    Bonsoir,

    merci pour le script voici le resultat :

    - Status ok : ../Destination_Upload/ existe
    - Status ok : ../Destination_Upload/ est accessible en lecture
    - Status ok : ../Destination_Upload/ est accessible en �criture

    - Status ok : ../Upload_Temp/ existe
    - Status ok : ../Upload_Temp/ est accessible en lecture
    - Status ok : ../Upload_Temp/ est accessible en �criture

    je n'avais pas eu le message lors de la 1 installation c'est pour cela que je ne sais pas trop pourquoi j'ai cette erreur.

    je resterer encore la page et toujours le meme message : Echec du téléchargement. Erreur d'ouverture du fichier temporaire.

    je vous joins la page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    <?php 
    /*
    VOIR PLUS D'INFORMATIONS ET POSSIBILITES DANS "UploadAjaxABCI_Php_Load.php"
     
    */
     
    // Vous devez vérifier l'existence de ces dossiers ou changer ces adresses
    /*------------------------------------------------------*/
    $dossier_destination = '../Destination_Upload/';
    $dossier_temporaire = '../Upload_Temp/';
    /*------------------------------------------------------*/
     
    session_start();
     
    // maximise les possibilités de reprise d'upload en cas d'arrêt intempestif.
    ignore_user_abort(true);
     
    header('Content-type: text/html; charset=UTF-8');
     
    /* NOTE : Si vous avez ajouté des champs input dans votre formulaire, utilisez la fonction urldecode() pour récupérer vos variables ex : $ma_variable = urldecode($_POST['ma_variable']) ;*/
     
    // Charge la classe php d'upload
    require 'UploadAjaxABCIServeur.php';
     
     
    $up = new UploadAjaxABCIServeur($dossier_destination, $dossier_temporaire);
     
    // $up->setModeDebug(); // ----- décommenter cette ligne pour avoir des retours serveur en phase de debuggage ------
     
     
    // getUniqidForm() renvoie l'identifiant de formulaire
    $unidid_form = $up->getUniqidForm();
     
    // Il est conseillé de ne pas supprimer cette ligne car c'est le token qui assure que ce script est appelé depuis le formulaire. Permet également de renvoyer un message en cas de timeout du serveur, connexion perdue ou non valide.
    /*if(!(isset($unidid_form,$_SESSION['UploadAjaxABCI'][$unidid_form]))) $up->exitErreurFichier("Connexion non valide ou perdue. Rafraîchissez la page et recharger votre fichier, si celui-ci dispose d'une sauvegarde automatique elle sera utilisée.");
    */
    // getFragment() retourne true si un fichier (ou un fragment de fichier) est joint au formulaire, sinon false
    $fichier_en_cours = $up->getFragment();
    if($fichier_en_cours)
    {		
    	// On peut récupérer le nom originel du fichier avec getFichierNomOriginel();
    	$nom_fichier_originel = $up->getFichierNomOriginel();
     
     
    	$extensions_autorisees = array('jpg','jpeg','png','mp4','avi','mpg','m2ts','mkv','flv','mp3'); //mettre les extensions autorisées en minuscules, les variantes en majuscules sont inutiles. Pensez à utiliser conjointement l'option de configuration javascript ".config.extensions_autorisees" ce qui permettra une information visiteur plus rapide.
     
    	// ATTENTION : danger potentiel si un tableau vide (comme ci-dessous pour les besoins de la démo) est passé à la fonction (= pas de vérification des extensions)
    	$extensions_autorisees = array();
     
    	$verif_extension = $up->VerifExtensions($nom_fichier_originel,$extensions_autorisees);
    	if($verif_extension == false) 
    	{
    		// Utilisez la fonction "exitErreurFichier ($value)" pour sortir du script en ajoutant un message qui sera concaténé au statut "info.status.erreur" de la classe javascript et envoyé dans le bloc html ayant la classe "UpAbci_status"
    		$up->exitErreurFichier('Extension du fichier non valide.');
    	}	
     
    	// Pour vérification des doublons sur le serveur, on récupère la destination du fichier avec "getFichierDestination()" qui retourne "$adresse_relative.$dossier_destination renseigné dans l'initialisation de la classe.$fichier nettoyé"
    	$destination_fichier = $up->getFichierDestination();
     
    	// Plutôt que de renommer le fichier en cas de doublon comme je le fais plus loin avec la fonction "RenommeDoublon()", on pourrait sortir du script avant d'employer la fonction "Upload()" et envoyer un message d'erreur en faisant :
    	/*
    	if(is_file($destination_fichier))
    	{
    		$up->exitErreurFichier('Ce fichier existe déjà.');		
    	}
    	*/
     
    	// Si aucune vérification ni renommage n'est fait, les fichiers du serveur ayant le même nom que les fichiers téléchargés seront écrasés.
     
    	// INDISPENSABLE : on doit utiliser la fonction "Upload()" pour réaliser le processus de téléchargement
    	$up->Upload();
     
    	// Le processus d'upload est dissocié de celui du transfert, pour permettre de traiter le fichier complet (par exemple pour faire des redimensionnements d'images en php) avant de le déplacer vers son emplacement définitif.  La fonction "getFichierComplet()" qui doit être utilisée après la fonction "Upload()", retourne l'adresse du fichier temporaire lorsqu'il est complet, sinon false. 
     
    	$fichier_complet = $up->getFichierComplet();
     
    	/* Par défaut la fonction "RenommeDoublon($destination_fichier)" ajoute un identifiant unique (uniqid) au nom des fichiers en cas de doublon avec des fichiers de même nom sur le serveur. Avec un second argument optionnel quelconque (ex : $up->RenommeDoublon($destination_fichier,'incr');) le nom des fichiers sera incrémenté. Un troisième argument optionnel casse sensivitive est également disponible, mais ne l'utilisez qu'en connaissance de cause et sur des serveurs casse sensitive (ne PAS utiliser sur les serveurs WINDOWS).*/
    	if($fichier_complet != false)
    	{
    		// la fonction de renommage est un peu gourmande en ressources (notamment si on utilise l'option d'incrémentation). Inutile de l'utiliser pour chaque fragment traité par ce script, d'où la condition "if($fichier_complet != false)" qui permet de ne l'utiliser qu'une fois le fichier complet)
    		$destination_fichier = $up->RenommeDoublon($destination_fichier);
     
     
    		// INDISPENSABLE : on utilise la fonction "Transfert()" après la fonction "Upload()", avec comme argument optionnel la destination du fichier. Retourne true en cas de succès, sinon false. la fonction "Transfert()" déplace le fichier temporaire de sauvegarde vers son emplacement définitif et supprime le cookie de sauvegarde identifiant ce fichier. 
    		$transfert = $up->Transfert($destination_fichier);
     
    		if($transfert)
    		{
    			//Si l'on doit indiquer les droits d'accès du fichier, par exemple 604, on pourrait faire
    			/*
    			if(!@chmod($destination_fichier,0604))
    			{
    				$up->exitErreurFichier("Echec de la configuration des droits d'accès du fichier");
    			}
    			*/
     
    			// On souhaite afficher un message textuel si le fichier a été renommé
    			$nom_final = pathinfo($destination_fichier, PATHINFO_FILENAME);
    			$extension_fichier = pathinfo($destination_fichier, PATHINFO_EXTENSION);
    			$nom_final = trim($extension_fichier) != '' ? $nom_final.'.'.$extension_fichier : $nom_final;
     
    			if ($nom_fichier_originel != $nom_final)
    			{
    				$up->addStatusOkAjax("renommé ".$nom_final);
    			}
     
    			if($up->getFichierOk())
    			{
    			$nom_fichier_original_1 =  filter_input(INPUT_POST, 'UpAbci_fichier_nom'); 
    			$nom_fichier_original = rawurldecode($nom_fichier_original_1);
    				try
    				{
    					$bdd = new PDO('mysql:host=db574318964.db.1and1.com;dbname=db574318964', 'dbo574318964', 'perpignan66');
    				}
    				catch(Exception $e)
    				{
    					die('Erreur : '.$e->getMessage());
    				}
     
    				// On ajoute une entrée dans la table jeux_video
    				$bdd->exec('INSERT INTO contenu_video(contenu_lien,ref_gite)  VALUES(\''.$nom_fichier_original.'\', \''.$_POST['gite'].'\')');
     
    				$bdd_ok = true;
    				if ($bdd_ok == true) {
     
    					// Utilisez la fonction "addStatusOkAjax($value)" si vous souhaitez envoyer des messages qui seront concaténés au statut ".info.status.ok" (de la classe javascript) qui renseigne le bloc html ayant la classe "UpAbci_status" dans la ligne d'information du fichier. Par exemple :
    					$up->addStatusOkAjax(", enregistrement en bdd ok.");
    					// affichera "Téléchargement ok, enregistrement en bdd ok." (si vous n'avez pas modifié la valeur de info.status.ok)
    				}
    				// Dans le cas du formulaire n°5 le message javascript "info.status.ok" a été configuré vide. On souhaite uniquement afficher un message textuel si le fichier a été renommé
    				if (isset($destination_fichier,$nom_input,$nom_fichier_originel) && $nom_input == 'upload5')
    				{
    					// On ne doit pas utiliser la variable "$nom_fichier_nettoye" précédemment définie car le nom du fichier peut être modifié en cas de doublon sur le serveur puisque j'utilise $up->RenommeDoublon() plus haut. 
     
    					$nom_final = pathinfo($destination_fichier, PATHINFO_FILENAME);
    					$extension_fichier = pathinfo($destination_fichier, PATHINFO_EXTENSION);
    					$nom_final = trim($extension_fichier) != '' ? $nom_final.'.'.$extension_fichier : $nom_final;
     
    					if ($nom_fichier_originel != $nom_final)
    					{
    						$up->addStatusOkAjax("renommé ".$nom_final);
    					}
    				}
    			}
     
     
    		}
    	}
    }
     
    // On peut aussi retourner des informations dans le bloc html ayant la classe "UpAbci_infos_form". Ici je choisi de faire afficher un message si aucun fichier n'est joint lors de l'envoi du formulaire en utilisant la fonction "addInfoFormAjax ($value)"
    if (!$fichier_en_cours)
    { 
    	$up->addInfoFormAjax('Aucun fichier traité');
    }
     
     
     
    // *INDISPENSABLE dans tous les cas : Envoi des informations nécessaires pour terminer le script javascript avec "exitReponseAjax()"
    $up->exitReponseAjax();
    ?>
    dans mon fichier header :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    <?php
    /*UploadAjaxABCI Custom
     
    Utilise le fichier "Php_Upload/UploadAjaxABCI_Php_Load.php" comme destination ajax
     
    -------------------------------------------------------- 
    */
     
    session_start();
    header('Content-type: text/html; charset=UTF-8');
     
    function Unique_Id()
    {
            return function_exists('openssl_random_pseudo_bytes')? hash("sha256",openssl_random_pseudo_bytes("128", $cstrong)) : hash("sha256",uniqid(rand(), true));
    }
     
    function Return_Octets($val)
    {
    	$val = str_replace(array(',',' '),array('.',''),$val);
    	$val = rtrim($val, "oO");
     
    	$last = strtolower(substr($val,-1));
     
    	switch($last)
    	{
    		case 't':  $val *= 1024;
    		case 'g':  $val *= 1024;
    		case 'm': $val *= 1024;
    		case 'k':  $val *= 1024;
    	}
    	return $val;
    }
     
    $taille_fragment = Return_Octets('8M'); /* Taille maximale des fragments de fichier. Détermine la fréquence de sauvegarde du fichier en cours d'upload (le fichier temporaire est sauvegardé à chaque fragment complet envoyé) et donc le nombre de requêtes ajax nécessaires à l'upload total. Utile pour limiter la taille des fragments pour les serveur qui ont une valeur "upload_max_filesize" importante sinon les sauvegardes seraient peu fréquentes. Par ailleurs chaque fragment est lu en mémoire pour être compilé dans le fichier temporaire, il faut donc auusi prendre en compte l'occupation mémoire. On peut augmenter cette valeur suivant la vitesse d'upload et les capacités du serveur. Cette valeur doit évidemment être inférieure à "upload_max_filesize" sinon elle n'est pas prise en compte dans le code ci-dessous.
     
    Note : la taille réelle des fragments sera inférieure de 10 Ko par rapport à la valeur indiquée car je décompte arbitrairement cette valeur pour tenir compte des éléments textuels de la requête ajax.
    */
     
     
    $upload_max_filesize = ini_get('upload_max_filesize');
    $upload_max_filesize = !empty($upload_max_filesize) ? $upload_max_filesize : '4M';// si ini_get est désactivé 4 Mo = valeur minimum courante 
    $upload_max_filesize = Return_Octets($upload_max_filesize);
    $UpAbci_max_fragment = !empty($taille_fragment) && $upload_max_filesize > $taille_fragment ? $taille_fragment : $upload_max_filesize;
     
    $UpAbci_uniqid_form = Unique_Id();
     
    // Jeton de formulaire
    $_SESSION['UploadAjaxABCI'][$UpAbci_uniqid_form] = 1;
    ?>
    <!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">
     
    	<head>
    		<title></title>
    		<meta http-equiv="content-type" content="text/html;  charset=utf-8" />
    		<meta name="description" content="<?php echo $description; ?>" />
    		<meta name="keywords" content="<?php echo $keywords; ?>" />
    		<meta name="subject" content="<?php echo $subject; ?>" />
    		<meta name="author" content="achat-en-folie" />
    		<meta name="revisit-after" content="1 days" />
    		<meta name="robots" content="index, follow, imageindex, imageclick" />
    		<meta name="sitename" content="" />
    		<link href="<?php echo RACINE_BACKEND ?>css/style.css" type="text/css" rel="stylesheet" />
    		<script type='text/javascript' src='js/jquery-1.4.2.min.js'></script>
    		<script type="text/javascript" src="<?php echo RACINE_BACKEND ?>js/selectPassage.js"></script>
    		<script type="text/javascript" src="<?php echo RACINE_BACKEND ?>ckeditor/ckeditor.js"></script>
    		<script type="text/javascript" src="<?php echo RACINE_BACKEND ?>js/jquery.preloadcssimages.js"></script>
     
     
    		<!--datepicker input--->
    	<script type="text/javascript" src="js/jquery.js"></script>
    	<script type="text/javascript" src="js/datepicker.js"></script>
        <script type="text/javascript" src="js/eye.js"></script>
        <script type="text/javascript" src="js/utils.js"></script>
     
     
    	<link rel="stylesheet" href="css/datepicker.css" type="text/css" />
     
     
     
     
     
    	<meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">
     
     
        <!-- Bootstrap Core CSS -->
        <link href="<?php echo RACINE_BACKEND ?>css/bootstrap.min.css" rel="stylesheet">
     
        <!-- Custom CSS -->
        <link href="<?php echo RACINE_BACKEND ?>css/sb-admin.css" rel="stylesheet">
     
        <!-- Morris Charts CSS -->
        <link href="<?php echo RACINE_BACKEND ?>css/plugins/morris.css" rel="stylesheet">
     
        <!-- Custom Fonts -->
        <link href="<?php echo RACINE_BACKEND ?>font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
     
    		<!--datepicker -->
    		 <!-- Load jQuery JS -->
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <!-- Load jQuery UI Main JS  -->
        <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
     
        <!-- Load SCRIPT.JS which will create datepicker for input field  -->
        <script src="<?php echo RACINE_BACKEND ?>js/script.js"></script>
     
     <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
        <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
        <![endif]-->	
    			<script type="text/javascript">
    	$(window).load(function () {
    	$.preloadCssImages();
     
    });
    </script>
     
    <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
    <style type="text/css">
    #form_upload {
    	font-family:Arial, Helvetica, sans-serif; 
    	font-size:1em;
    	max-width:550px;
    	margin:2em auto 2em auto;	
    	border:3px solid #f3f3f3;
    	border-radius:5px;
    	box-shadow: 0px 0px 2px 1px rgba(100, 100, 100, 0.8);
    	overflow:hidden;
    }
     
    #form_upload p {
    	margin:0;
    	padding:0;
    }
     
    #form_upload input[type=file] {
    	display:none !important;
    }
     
    #form_upload .bouton_custom_file {
    	font-size:1.1em;
    	width:auto;
    	min-height:1.8em;
    	padding:0.9em 0 0.15em 0;
    	text-align:center;
    	background:#f3f3f3;
    	border:none;
    	cursor:pointer;
    }
     
    #form_upload .infos_fichiers {
    	font-size:0.8em;
    	display:none;
    	border:1px solid #b5b5b5;
    	margin:0 auto;
    	padding:0 1.2em 1em 1.5em;
    }
     
    #form_upload .UpAbci_infos_upload {
    	margin:0.25em 0 0.1em 0;
    	border-bottom:1px solid #e2e2e2;
    	padding:0;
    }
     
    #form_upload .UpAbci_infos_upload progress {
    	height:0.8em;
    	width:15%;
    	padding:0;
    	margin:0;
    	display:none;
    	vertical-align:baseline;
    }
     
    #form_upload .UpAbci_apercu_img {
    	position:relative;
    	height:100%;
    }
     
    #form_upload .UpAbci_apercu_img img {
    	position:absolute;
    	bottom:0px;
    }
     
    #form_upload input[type=button]:not(.fin_traitement) {
    	background:#F3F3F3;
    	box-shadow:inset 0px 0px 1px 0px #ddd;
    	border:1px solid #BFBFBF;
    	border-radius:3px;
    	cursor:pointer;
    	color: black;
    	padding:0;
    	font-size:0.8em;
    }
     
    #form_upload .arret {
    	height:1.9em;
    	letter-spacing:0.10em;
    }
     
    #form_upload .submit {
    	height:30px;
    	box-shadow:inset 0px 0px 3px 0px #ddd;
    	border:1px solid #BFBFBF;
    	border-radius:3px;
    	cursor:pointer;
    	background:#F3F3F3;
    	margin:auto;
    }
     
    #form_upload .symbol_rond {
    	display:none;
    	position:absolute;
    	top:0;
    	margin-top:0.2em;
    	right:0;
    	width:13px;
    	height:13px;
    	border-radius:50%;
    	box-shadow:inset 0px 0px 3px 0px #aaa;
    }
    </style>
     
     
    	</head>
    merci pour votre aide.

  6. #46
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Dans le dossier "Upload_Temp" il y a un fichier .htacess. Supprime-le pour voir (supprimes-le sur ton serveur de test). Normalement il ne gène pas mais tu peux toujours essayer (je connais pas bien son comportement pour des serveur autres que linux, au cas où).

    Sinon dis-nous sur quel serveur tu fais ton test.
    En local ? sur wampserveur ou easy php ?
    ou sur un serveur distant, lequel ? quel hébergeur ? donne un lien vers ton hébergeur et la formule d'hébergement que tu utilise.
    Si cela ne fonctionne pas n'oublies pas de répondre à ces questions.

    A part ça c'est "un peu" le bin's dans ton fichier "header". Jquey est chargé par moins de 4 fois.

  7. #47
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    je travail en ligne sur serveur 1&1.

    http://www.1and1.fr/hebergement-web#hosting-system

    le pack starter.

    merci.

  8. #48
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et dans ton fichier "header" je ne vois nulle part la configuration du formulaire ni de la classe d'upload javascript ????

    Sinon c'est un serveur Linux ?

  9. #49
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    voici ma page newvideo.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    <?php
    include('backups/config.inc.php');
    $description = "";
    $keywords = "";
    $title = "";
    $subject = "";
    $fakea = "";
    $menu_gauche = true;
    $managerContenuVideos = new ContenuVideoManager_PDO($db);
     
     
     
     
     
    $body = '';
     
    //Si GET supprimer envoyé suppression du produit donnée en paramétre
    if(isset($_POST['supprimer']))
    {
    	$managerAccueil->delete((int)$_POST['id']);
    	$message = 'La news &agrave; bien &eacute;t&eacute; supprim&eacute;e !';
    }
     
     
    /***************************************************************/
    /***************************SOUMISSION******************/
    /************************************************************/
    //verifie si les variables existent si c est un ajout ou une modification
    if (isset($_POST['save']))
    {
     
    				$contenu = new contenuVideo (
    				array (
     
    				'contenu_lien' => $_FILES['upload']['name'],
    				'ref_gite' => $_GET['gite']
    				)
    				);
     
     
    				//si c'est une modification d'un Appartement
    				if (isset ($_POST['contenu_id']))
    				{	
     
    					$contenu->setContenuId($_POST['contenu_id']);
     
    				}
     
    				/**si nouvelle photos**/
    				if (!empty($_FILES['fichier']['name']))
    				{	
     
    					$contenu->setContenuLien($_FILES['fichier']['name']);
     
    				}
     
     
    				//verifie si les variables ne sont pas vide
    				if ($contenu->isValid())
    				{
     
    					$managerContenuVideos->save($contenu);
    					$message = $contenu->isVideos() ? 'La video a bien &eacute;t&eacute; ajout&eacute;e !' : 'La video a bien &eacute;t&eacute; modifi&eacute;e !';
     
     
     
    				}
    				else
    				{
    					$erreurs = $contenu->erreurs();
    				}
     
    			}
     
     
    $body='';
     
    $body.='<a href="GestContenuVideos.php?gite='.$_GET['gite'].'"><img src="'.RACINE_BACKEND.'images/retour.png" class="retour"/></a>
     
      <div style="background-color:#404040;color:white;width:60%;margin:auto;text-align:center;">
    			Pour ajouter une video cliquer sur le bouton ajouter puis cliquez sur le bouton "cliquez <br />ou deposer un fichier" ou glissez la vidéo dessus.<br />
    		    Pour modifier une video supprimer la vidéo et ajouter la nouvelle video.<br />
    			Pour supprimer une video cliquer sur le bouton supprimer de l&#146;image &agrave; supprimer.
    			</div>		<br />
    <form id = "form_upload" action = "#" method = "post">
     
        <legend></legend>';
         /*attention : name="upload5" -> pour cet exemple le traitement côté serveur sera identique au formulaire n°5 */ 
         $body.='
    	 <input type="file" multiple="multiple" name="upload[]" />
    	  <input type="hidden" value="envoyer" name="evoyer" id="envoyer"/>
    	  <input type="hidden" value="'.$_GET['gite'].'" name="gite" id="gite"/>
         <input type="hidden" value="<?=$UpAbci_uniqid_form?>" name="UpAbci_uniqid_form" />
         <input type="hidden" value="<?=$UpAbci_max_fragment?>" name="UpAbci_max_fragment" />
     
    	<p class="bouton_custom_file">Cliquez ou déposez vos fichiers ici</p>
    ';
    	/*Je pourrais utiliser data-upabcicss-submit-file="display:block" dans le bloc ci-dessous pour afficher directement les fichiers dès leur sélection. Pour exemple je vais utiliser la fonction javascript événementielle ".config.fonction_js_submit_file" et exécuter un slide (glissement)*/
       $body.=' <div class="infos_fichiers" >';
     
            /*<div>Ici si besoin vous pourriez ajouter des input de type "text" ou autre </div>*/
     
           $body.=' <div class="UpAbci_infos_upload">';
            /*A noter que laffichage des vignettes nest pas instantanné et peut donc produire un redimensionnement continu du bloc dinformation lors de leur affichage. Pour réserver la hauteur nécessaire (qui devrait être au moins égale à la configuration ".config.max_height_apercu"), on peut appliquer le style événementiel "data-upabcicss-image-preview" qui sappliquera uniquement si le fichier soumis est une image et si les limitations ".config.total_max_weight_apercu" et ".config.max_weight_apercu" ne sont pas dépassées*/
                $body.='<div style="position:relative;padding-bottom:0.35em" data-upabcicss-image-preview="height:70px">';
     
                    /* vignette aperçu (ne saffichera que si cest une image). */ 
                    /*style="display:inline-block;height:70px"*/
                   $body.=' <span style="display:inline-block" class="UpAbci_apercu_img" data-upabcicss-image-preview="width:100px"></span>';
     
                    /* progression graphique */ 
                   $body.=' <progress class="UpAbci_progressionG" data-upabcicss-encours="display:inline" data-upabcicss-result="display:none" data-upabcicss-result-partiel="display:inline" data-upabcicss-sauvegarde="display:inline"></progress>';
     
                    /* status en cours */ 
                   $body.=' <span class="UpAbci_status" style="display:none" data-upabcicss-encours="color:#090;display:inline" data-upabcicss-result="display:none"></span>';
     
                    /* sauvegarde résultat partiel */ 
                   $body.=' <span style="display:none" data-upabcicss-result-partiel="display:inline;color:#916C00"> sauvegardé : </span><span class="UpAbci_sauvegarde" style="display:none" data-upabcicss-result-partiel="display:inline"></span>';
     
                    /* temps restant */
                   $body.=' <span style="display:none" data-upabcicss-temps-restant-requis="display:inline" data-upabcicss-result="display:none"> temps restant : </span><span class="UpAbci_temps_restant" style="display:none" data-upabcicss-temps-restant-requis="display:inline" data-upabcicss-result="display:none"> - </span>';
     
                     /* si téléchargement ok on affiche un rond vert */       
                   $body.=' <span class="symbol_rond" style="background-color:#0C0;" data-upabcicss-result-ok="display:block"></span>'; 
     
                    /* si erreur ou arrêt on affiche un rond rouge */       
                   $body.=' <span class="symbol_rond" style="background-color:#F00;" data-upabcicss-result-arret="display:block" data-upabcicss-result-erreur="display:block" data-upabcicss-result-partiel="display:none" ></span>';
     
                    /* si sauvegarde on affiche un rond jaune-orange */       
                 $body.='   <span class="symbol_rond" style="background-color:#FC0;" data-upabcicss-result-partiel="display:block"></span>     
                </div>
     
                <div style="padding-bottom:0.3em;min-height:2.7em">
                    <input type="button" class="UpAbci_arret arret" style="display:inline-block;width:4em" data-upabcicss-result="cursor:default;opacity:0.4" value="arrêt" />
                         ';                               
                    /* nom du fichier */
                    $body.='<span class="UpAbci_nom"></span>';
     
                    /* taille du fichier */
                    $body.='<span class="UpAbci_taille">0Mo</span>';
     
                    /* status arrêt ou erreur, data-upabcicss-result-ok sert pour afficher le nouveau nom du fichier sil a été renommé */ 
                 $body.='   <p class="UpAbci_status" style="display:none" data-upabcicss-result-arret="color:red;display:inline-block" data-upabcicss-result-erreur="color:red;display:inline-block" data-upabcicss-result-ok="color:#916C00;display:block;font-size:0.9em"></p>     
                </div>
              </div>
     
            <div style="margin-top:1.5em;height:3em;">';
            	/* arrêter tout */
               $body.=' <input type="button" value="Arrêter tout" class="UpAbci_arreter_tout arret" style="float:left;width:75px" data-upabcicss-fin-traitement="cursor:default;opacity:0.4" />';
     
                /* bouton fermer */
             $body.='   <input type="button" value="Fermer" class="fermer_formulaire arret" style="float:right;width:55px" data-upabcicss-submit="cursor:default;opacity:0.4" data-upabcicss-fin-traitement="cursor:pointer;opacity:1" />';
     
                /* bouton envoyer */
               $body.=' <input type="submit" class="submit" value="Envoyer" style="width:120px;font-size:1.2em;display:block;margin:auto;" data-upabcicss-fin-traitement="display:none" />';
     
               /* saffichera uniquement en fin de traitement du formulaire à la place du bouton envoyer */
              $body.='	<input type="button" class="submit fin_traitement" style="width:120px;font-size:0.9em;display:none;margin:auto" data-upabcicss-fin-traitement="display:block" value = "Traitement terminé" />       
            </div>';
     
    		/* retour dinformations générales du formulaire alimenté par retour ajax. Le fichier php de traitement (UploadAjaxABCI_Php_Load.php) renvoie pour linstant Aucun fichier traité si aucun fichier na été soumis. Dans le contexte de ce formulaire, puisque le bouton denvoi du formulaire ne saffiche quaprès avoir soumis des fichiers, il faut arrêter tous les fichiers avec le bouton "arrêt" avant la soumission du formulaire pour obtenir ce message. */
            $body.='<div class="UpAbci_infos_form" style="display:none;clear:both" data-upabcicss-fin-traitement="display:block;"></div>  
     
     
        </div>
    </form>';
     
    include('backups/baseAdmin.php');
    ?>
     
    <script src="js/jquery.js"></script>
     
    <!-- UploadAjaxABCI.js est la version minifiée de UploadAjaxABCI_DEV.js -->
    <script src="js/UploadAjaxABCI.js"></script>
     
    <script type="text/javascript">	
     
    var Upload = new UploadAjaxABCI('#form_upload','Php_Upload/UploadAjaxABCI_Php_Load_Custom.php','.infos_fichiers');
     
    // configuration optionnelle (exemples)
    Upload.config.ajax_delai = 750;// en milliseconde, espacement entre deux requêtes ajax
     
    // Si vous faites un contrôle des extensions, vous devez refaire ce même contrôle côté serveur par sécurité
    //Upload.config.extensions_autorisees = ['jpg','jpeg','png','mp4','avi','mpg','m2ts','mkv','flv','mp3'];
     
    // Attention il conviendrait de baisser (ou mettre à zéro) la valeur ci-dessous pour les smartphones.
    Upload.config.total_max_weight_apercu = 100; // en Mo poids total maximum de toutes les photos. Au delà les vignettes ne seront pas affichées.
     
    // (Les valeurs par défaut sont 90 et 60)
    Upload.config.max_width_apercu = 100; // en pixels, largeur maximale de l'aperçu
    Upload.config.max_height_apercu = 70;// en pixels, hauteur maximale de l'aperçu
     
    // Je désactive l'affichage automatique des vignettes pour attendre la fin de l'ouverture de la boite. J'emploierai plus bas la fonction ".config.img_preview()" pour afficher les vignettes en temps voulu. En mettant true vous observerez directement la différence d'affichage à l'ouverture de la boite (saccades) surtout visible si vous télécharger plusieurs images de plusieurs Mo
    Upload.config.img_preview_auto = false;
     
    // Option pour indiquer un élément html en remplacement du bouton de sélection des fichiers par défaut du navigateur.
    Upload.config.custom_select_file = ".bouton_custom_file";
     
    // Durant le téléchargement des fichiers, applique ces effets sur le bouton d'envoi du formulaire.
    Upload.config.css_submit_upload = "cursor:wait;opacity:0.4";
     
    // Durant le téléchargement des fichiers, applique ces effets le bouton de sélection des fichiers.
    Upload.config.css_file_upload = "cursor:wait;opacity:0.7;color:#333";
     
    // Ici je défini des nouvelles variables dans l'objet ".config". Elle me serviront plus bas dans le code. Cette méthode peut être utilisée pour conserver le même espace de nom et éviter des conflits de variables avec des scripts externes. Cependant, il faut penser impérativement à préfixer le nom des variables avec des caractères suffisamment originaux pour ne pas entrer en conflit avec des variables de configuration internes. Ici j'ai choisi "perso_". 
    Upload.config.perso_form = $("#form_upload");
    Upload.config.perso_infos = Upload.config.perso_form.find(".infos_fichiers");
    Upload.config.perso_select = Upload.config.perso_form.find(".bouton_custom_file");
    Upload.config.perso_select_texte = Upload.config.perso_select.text();
    Upload.config.perso_select_remplacement = "Traitement en cours...";
    Upload.config.perso_slideUp = function(){Upload.config.perso_infos.slideUp(400)};
    Upload.config.perso_fermer_formulaire = $();
     
     
    // Définition d'une fonction javascript événementielle qui sera exécutée à la soumission des fichiers (option ".config.fonction_js_submit_file")
    // Attention d'utiliser "one" (cf doc jquery) et non pas "on" pour lier l'événement onclick car on peut appuyer plusieurs fois successivement sur le bouton de sélection des fichiers (donc la fonction "fonction_js_submit_file" peut être appelée plusieurs fois).
    Upload.config.fonction_js_submit_file = function()
    { 
    	// on ouvre la boite d'information avec un slide d'ouverture (slideDown)
    	Upload.config.perso_infos.slideDown(400, function() 
    	{
    		// Une fois l'ouverture terminée...
    		// Les éléments sont bien dans le DOM et on peut appliquer un slide de fermeture (slideUp) onclick sur le bouton de fermeture
    		Upload.config.perso_fermer_formulaire = Upload.config.perso_form.find(".fermer_formulaire");
     
    		Upload.config.perso_fermer_formulaire.one("click", Upload.config.perso_slideUp) 
     
    	   	// Et on fait afficher les vignettes avec la fonction ".config.img_preview" (qui ne fonctionne que si ".config.img_preview_auto = false" sinon l'affichage est automatique dès la sélection des fichiers)
    		Upload.config.img_preview();
    	});	
    }
     
     
    // Définition d'une fonction javascript événementielle qui sera exécutée à la soumission du formulaire (option ".config.fonction_js_submit")
    Upload.config.fonction_js_submit = function()
    {
    	// Durant l'upload je supprime la possibilité de fermeture pour que le visiteur puisse toujours voir les informations
       Upload.config.perso_fermer_formulaire.off("click");
     
       // Et je change le contenu de l'entête (.bouton_custom_file) en mettant "Traitement en cours..."
       Upload.config.perso_select.text(Upload.config.perso_select_remplacement);
    }
     
     
    // Définition d'une fonction javascript événementielle qui sera exécutée à la fin du traitement du formulaire (option ".config.fonction_js_fin")  
    Upload.config.fonction_js_fin = function()
    { 
    	// L'upload terminé je remet le comportement de fermeture sur le bouton de fermeture et sur le bouton d'information "Traitement terminé" défini dans le html avec ".fin_traitement"
       	$.each([Upload.config.perso_form.find(".fin_traitement"), Upload.config.perso_fermer_formulaire], function()
    	{
    		$(this).one("click", Upload.config.perso_slideUp)
    	})
       	// Je remet le texte initial 
       	Upload.config.perso_select.text(Upload.config.perso_select_texte);
    }
     
     
    // Modification des messages par défaut de la classe
    Upload.info.status.encours = 'en cours';
    Upload.info.status.arret = 'arrêt';
    Upload.info.status.ok = ""; // Modification de la réponse textuelle du status si téléchargement ok. En mettant vide seules les informations envoyées par php en retour de requête ajax seront s'affichées.
     
    // Démarrage de la fonction, DOM chargé
    $(function(){Upload.Start()});
    </script>

  10. #50
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    J'ai rajouté une ligne dans le fichier de test, refais-le à nouveau avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    header('Content-type: text/html; charset=UTF-8');
     
    // Vérification des dossiers et de leur droits en écriture et en lecture.
     
    // Indiquez le même chemin des dossiers que celui indiqué dans le fichier d'upload serveur "UploadAjaxABCI_Php_Load....php" et placer ce fichier dans le même répertoire ("Php_upload" si vous utilisez le dossier de test original)
    $verif [] = '../Destination_Upload/';;
    $verif [] = '../Destination_Upload2/';
    $verif [] = '../Upload_Temp/';
     
     
     
    foreach ($verif as $dossier)
    {
    	echo '<p style="margin-top:2em">';
    	if(is_dir($dossier))
    	{
    		echo "- Status ok : $dossier  existe<br>";
    		echo is_readable($dossier) ? "- Status ok : $dossier est accessible en lecture<br>" : "- <strong>Erreur de droit</strong> : $dossier n'est pas accessible en lecture<br>";
    		echo is_writable($dossier) ? "- Status ok : $dossier est accessible en écriture<br>" : "- <strong>Erreur de droit</strong> : $dossier n'est pas accessible en écriture<br>";
     
    		$fichier_cible = @fopen('fichier_de_test', 'a+');
    		echo ($fichier_cible !== false) ? "- Status ok : possibilité d'écrire un fichier dans le dossier" : "- <strong>Erreur </strong> : impossible d'écrire un fichier dans le dossier<br>";
    		fclose($fichier_cible);
    	}
    	else echo "- <strong>Erreur</strong> : $dossier n'existe pas ou le chemin indiqué n'est pas le bon.<br>";
     
    	echo '<p>';
    }
    ?>

  11. #51
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    voici le resultat :
    - Status ok : ../Destination_Upload/ existe
    - Status ok : ../Destination_Upload/ est accessible en lecture
    - Status ok : ../Destination_Upload/ est accessible en �criture
    - Status ok : possibilit� d'�crire un fichier dans le dossier

    - Status ok : ../Upload_Temp/ existe
    - Status ok : ../Upload_Temp/ est accessible en lecture
    - Status ok : ../Upload_Temp/ est accessible en �criture
    - Status ok : possibilit� d'�crire un fichier dans le dossier

    j'ai fais un test avec 2 autres seveur est le meme dossier et tout a fonctionner donc j'ai bien peur que cela vient de ce serveur.

    j'ai supprimer tous le contenu du serveur verifier les droits mais rien n'a faire .

  12. #52
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Cela peut venir de comment tu as créer les dossiers. Soit en les copiant par ftp, soit en les créant directement sur le serveur distant. Essaies les deux méthodes (supprimes-les avant).

    Sinon tu dis que cela fonctionne pour deux autres serveurs. Lesquels ? Est-ce que tu fais exactement les mêmes manip avec celui qui ne fonctionne pas ?

  13. #53
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    j'ai telecharger le dossier uploadAjax complet les copier dans deux server 1&1 a la racine que j'ai aussi cela a fonctionner tout de suite.
    J'ai copier le meme dossier a la racine de mon site supprimer tous le reste est cela met toujours le message impossible d'ouvrir le fichier temporaire.

    c est vraiement etrange.

  14. #54
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    connaitrai vous un autre script pour upload de video mp4 si possible.merci.

  15. #55
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par kate59 Voir le message
    j'ai telecharger le dossier uploadAjax complet les copier dans deux server 1&1 a la racine que j'ai aussi cela a fonctionner tout de suite.
    J'ai copier le meme dossier a la racine de mon site supprimer tous le reste est cela met toujours le message impossible d'ouvrir le fichier temporaire.

    c est vraiement etrange.
    Ce sont les mêmes versions de php sur chaque hébergement ?

  16. #56
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    bonjour,

    j'ai mit en version 5.5 php sur le site est tout marche merci encore.

    J'ai une petite question dans le fichier : UploadAjaxABCI_Php_Load_Custom.php

    j'ai voulus rajouter une requete update si le fichier existe deja il l'ecrase et n'ajouter pas de fichier dans la base mais j'ai un message impossible de telecharger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    	if($up->getFichierOk())
    			{
    			$nom_fichier_original_1 =  filter_input(INPUT_POST, 'UpAbci_fichier_nom'); 
    			$nom_fichier_original = rawurldecode($nom_fichier_original_1);
    				try
    				{
    					$bdd = new PDO('mysql:host;dbname=xxx', 'xxxxx', 'xxx');
    				}
    				catch(Exception $e)
    				{
    					die('Erreur : '.$e->getMessage());
    				}
     
    				/*$managerContenuVideos = new ContenuVideoManager_PDO($db);*/
     
     
    				/*if($managerContenuVideos->ExistByNom($nom_fichier_original))
    				{
    				// On ajoute une entrée dans la table jeux_video
    				$bdd->exec('UPDATE contenu_video SET contenu_lien = "'.$nom_fichier_original.'", ref_gite = "'.$_POST['gite'].' WHERE contenu_lien = '.$nom_fichier_original.'');
    				}
    				else
    				{*/
    				// On ajoute une entrée dans la table jeux_video
    				$bdd->exec('INSERT INTO contenu_video(contenu_lien,ref_gite)  VALUES(\''.$nom_fichier_original.'\', \''.$_POST['gite'].'\')');
     
    				$bdd_ok = true;
    				if ($bdd_ok == true) {
     
    					// Utilisez la fonction "addStatusOkAjax($value)" si vous souhaitez envoyer des messages qui seront concaténés au statut ".info.status.ok" (de la classe javascript) qui renseigne le bloc html ayant la classe "UpAbci_status" dans la ligne d'information du fichier. Par exemple :
    					$up->addStatusOkAjax(", enregistrement en bdd ok.");
    					// affichera "Téléchargement ok, enregistrement en bdd ok." (si vous n'avez pas modifié la valeur de info.status.ok)
    				}
    				/*}*/
    				// Dans le cas du formulaire n°5 le message javascript "info.status.ok" a été configuré vide. On souhaite uniquement afficher un message textuel si le fichier a été renommé
    				if (isset($destination_fichier,$nom_input,$nom_fichier_originel) && $nom_input == 'upload5')
    				{
    					// On ne doit pas utiliser la variable "$nom_fichier_nettoye" précédemment définie car le nom du fichier peut être modifié en cas de doublon sur le serveur puisque j'utilise $up->RenommeDoublon() plus haut. 
     
    					$nom_final = pathinfo($destination_fichier, PATHINFO_FILENAME);
    					$extension_fichier = pathinfo($destination_fichier, PATHINFO_EXTENSION);
    					$nom_final = trim($extension_fichier) != '' ? $nom_final.'.'.$extension_fichier : $nom_final;
     
    					if ($nom_fichier_originel != $nom_final)
    					{
    						$up->addStatusOkAjax("renommé ".$nom_final);
    					}
    				}
    			}
    merci.

  17. #57
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Ah tu avais donc une ancienne version de php
    J'avais pas pensé à te le demander au départ vu que tu disais (ou j'ai cru) que c'était un nouveau site... Au passage te souviens-tu de l'ancienne version de php pour lequel le script ne fonctionnait pas, ça pourrait servir à d'autres (merci de répondre à cette question !).

    Pour ton code je suppose que tu as mélangé des bouts de scripts pris dans les fichiers "UploadAjaxABCI_Php_Load_Custom.php" et "UploadAjaxABCI_Php_Load.php"...

    Donc évidemment la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($destination_fichier,$nom_input,$nom_fichier_originel) && $nom_input == 'upload5')
    ne sert à rien ici.

    Le plus simple est d'utiliser le code du fichier "UploadAjaxABCI_Php_Load_Custom.php" (puisque tu utilise le formulaire "custom") et de faire ta requête dans la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($transfert)
    {
    ...
    }

    A noter que pour retourner des erreurs proprement, et surtout visibles dans les informations du formulaire, tu dois utiliser la fonction "exitErreurFichier()". Et donc le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
    {
    	$bdd = new PDO('mysql:host=xxxx.db.1and1.com;dbname=xxxx', 'xxxx', 'xxxx');
    }
    catch(Exception $e)
    {
    	die('Erreur : '.$e->getMessage());
    }
    devrait être remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
    {
    	$bdd = new PDO('mysql:host=xxxx.db.1and1.com;dbname=xxxx', 'xxxx', 'xxxx');
    }
    catch(Exception $e)
    {
            // en production pour ne pas donner de message qui pourraient être utile à un pirate
    	exitErreurFichier('Erreur de connexion à la bdd');
     
           // en développement
    	exitErreurFichier($e->getMessage());
    }

    Je vois aussi des "curiosités" dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $bdd_ok = true;
    if ($bdd_ok == true) {
    ... // évidemment on passera toujours dans cette condition
    }

  18. #58
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 26
    Points : 21
    Points
    21
    Par défaut trop de puissance !!!
    Bonjour

    tout d'abord je vous fait mes remerciement et mes félicitations pour ce code qui est, à ma connaissance le seul qui tienne ses promesses (comprendre : qui fonctionne comme indiqué par son concepteur sans avoir besoin d'un serveur exotique)

    Celui-ci est très riche en fonctionnalités... trop !

    Je viens de passer trois soirée à tenter de le comprendre pour pouvoir l'adapter à mon besoin qui est très simple dans son énoncé : permettre d'umploader UN très gros fichier en informant l'utilisateur de l’avancement.
    Malheureusement votre code est très peu commenté(désolé) et écrit à la mode "objet". C'est sans doute suffisamment clair pour un professionnel ... mais c'est imbitable pour le béotien que je suis.

    Ma demande peut donc ce décliner de deux façons indépendantes :

    -1- "Je suis un guerrier et je vais réussir à comprendre tout le code que j'utilise ! GROARR !!!"
    auriez-vous dans vos sauvegardes une version de votre script qui ne face QUE l'upload d'un gros fichier par fragment avec l’avancement ? (sans gestion de miniature d'image, de multifichier, de renommage automatique...) Le cas échéant, pourriez vous fournir une version "trépanée" de votre code actuel ?

    -2- "bon là je suis charrette... je vais donc me contenter d'une boite noire que je comprendrai plus tard... un jour... peut-être... ou pas...boarfff..."
    -2a- (indispensable) pourriez vous ajouter 1 paramètre PHP accessible uniquement du coté serveur : un nom de fichier qui sera imposé quelque-soit celui du fichier uploadé (tout en concevant l’extension)
    -2b- (très cool mais secondaire) pourriez vous ajouter un paramètre javascript du genre "Upload.config.fonction_js_refresh = function()" qui permettrait de lancer un script à chaque mise à jour des informations de téléchargement.
    -2c- (très cool mais secondaire) pourriez vous ajouter (ou m'indiquer si cela existe déjà) des variables accessible à un javascript à chaque chaque mise à jour des infos :
    • taille total du fichier en octet.
    • tail de ce qui à déjà été transmis en octet.


    S'il vous plaît

  19. #59
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par LEIôPAR Voir le message
    Bonjour

    tout d'abord je vous fait mes remerciement et mes félicitations pour ce code qui est, à ma connaissance le seul qui tienne ses promesses (comprendre : qui fonctionne comme indiqué par son concepteur sans avoir besoin d'un serveur exotique)

    Celui-ci est très riche en fonctionnalités... trop !
    ...
    Malheureusement votre code est très peu commenté(désolé) et écrit à la mode "objet". C'est sans doute suffisamment clair pour un professionnel ... mais c'est imbitable pour le béotien que je suis.
    Comment ça mon code n'est pas commenté ? Lequel ? En fait il faudrait commencer par le fichier "UploadAjaxABCI.php" qui comprend le plus d'exemples. Et puis il y a un mode d'emploi Alors oui y'a beaucoup de possibilités et donc forcément ça fait de la lecture pour tout personnaliser mais en contre partie on peut faire à peu près ce que l'on veut.

    Pour les débutants le plus simple est de prendre le fichier "UploadAjaxABCI_Custom.php"
    (cf. message suivant)

    Même si par défaut il gère l'affichage des vignettes photos, qu'est-ce que ça peut faire puisque si ce ne sont pas des images rien ne sera affiché. Enfin si tu ne veux pas les afficher, il suffit de mettre la valeur 0 pour le paramètre Upload.config.total_max_weight_apercu (initialement = 100 en bas dans ce même fichier). D'ailleurs je dis qu'il conviendrait de baisser cette valeur pour les smartphones, cela aurait dû te mettre la puce à l'oreille.

    Concernant l'upload multiple si tu ne souhaites pas l'autoriser, dans le code html (toujours dans ce même fichier) il suffit d'enlever la mention : multiple="multiple" dans l'input de type file.

    Pour le renommage des fichiers, cela se situe côté serveur (dossier "Php_Upload") dans le fichier "UploadAjaxABCI_Php_Load_Custom.php" qui est le fichier d'upload utilisé par le fichier "UploadAjaxABCI_Custom.php".
    Pour éviter de renommer les fichiers en cas de doublons sur le serveur il suffit de supprimer (ou mettre en commentaires) la ligne $destination_fichier = $up->RenommeDoublon($destination_fichier);Dans ce cas les nouveaux fichiers écraseront les anciens de même nom.

    Et si tu préfère un message d'avertissement pour dire que le fichier existe déjà il suffit de dé commenter les lignes plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*
    if(is_file($destination_fichier))
    {
    	$up->exitErreurFichier('Ce fichier existe déjà.');		
    }
    */
    Tu vois qu'il suffit de peu de chose pour avoir une version "trépanée" comme tu dis

    Pour imposer un nom de fichier, à suite de la ligne $destination_fichier = $up->getFichierDestination(); tu peux ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //...
    $destination_fichier = $up->getFichierDestination();
     
    $nom_impose = "toto"; // tous les fichiers s'appelleront "toto.xxx" enfin un seul car tel quel les suivants écraseront les précédents s'ils possèdent la même extension)
    $path_parts = pathinfo($destination_fichier);
     
    $destination_fichier = $path_parts['dirname'].'/'.$nom_impose.'.'.$path_parts['extension'];
    //...
    et enfin si tu ne souhaites pas indiquer au visiteur le changement du nom du fichier (puisque tu l'a renommé avec un nom imposé) il suffit de supprimer ou mettre en commentaire la ligne (toujours dans le fichier "UploadAjaxABCI_Php_Load_Custom.php") :
    $up->addStatusOkAjax("renommé ".$nom_final);

    Et voilà

    Sinon pour les fonctions javascript, pour quel usage voudrais-tu les utiliser ?
    La taille du fichier original ne change jamais, et la progression de la taille transférée est montrée en exemple dans le fichier "UploadAjaxABCI.php".

  20. #60
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Note Importante pour les utilisateurs débutants ** :

    Le plus simple est de prendre le fichier "UploadAjaxABCI_Custom.php" pour avoir une solution complète prête à l'emploi.

    Néanmoins pour pouvoir faire son propre module d'upload sur mesure, commencez par lire le mode d'emploi et regardez les fonctionnalités de base dans le fichier "UploadAjaxABCI_Basique.php" (cf. commentaires dans le code source des fichiers).

    Ensuite se référer au fichier "UploadAjaxABCI.php" qui regroupe d'autres exemples de configuration de la classe et d'utilisation des styles css évènementiels.

    Le fichier "UploadAjaxABCI_Custom.php" est un exemple plus élaboré qui reprend les fonctionnalités déjà décrites et donne un exemple d'utilisation des fonctions javascript évènementielles.

    Les styles css évènementiels et les fonctions javascript évènementielles sont conçus pour fournir des commandes en fonction du retour des informations en temps réel et donc pour la présentation dynamique du formulaire. Ils ne sont pas indispensables pour l'upload, ni pour les informations de retour qui s'affichent suivant les classes que vous utiliserez (ou non) dans votre html.

    Par exemple un élément html ayant la classe "UpAbci_nom" <span class="UpAbci_nom"></span> permettra d'afficher le nom du fichier, tandis que <span class="UpAbci_temps_restant"></span> affichera le temps restant estimé.

    A la fin de l'upload du fichier, l'affichage du temps restant ne sera plus utile. Je pourrais le laisser en place à 0 mais si je veux gagner de la place pour afficher d'autres informations ou simplement épurer pour ne garder que les informations utiles, je peux supprimer cet affichage en utilisant le style css évènementiel "data-upabcicss-result" qui sera activé dès la fin de traitement du fichier. Le code html deviendra donc <span class="UpAbci_temps_restant" data-upabcicss-result="display:none"></span>.

    Le principe est donc simple, c'est la multitude des possibilités et combinaisons qui rend le code finalement plus compliqué (c'est aussi le principe de la programmation)

    Mais vous voyez qu'il y a une grande latitude pour personnaliser l'affichage en modifiant uniquement le html sans avoir besoin de modifier la classe javascript elle-même (ce qui serait vraiment beaucoup plus compliqué voire infaisable pour les débutants)

    Dossier complet ici

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 15 PremièrePremière 123456713 ... DernièreDernière

Discussions similaires

  1. Upload de fichiers par fragments (chunk) - Erreur d'ouverture du fichier temporaire
    Par Kakolio dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 10/07/2015, 18h27
  2. [SP-2007] Upload de gros fichiers par programme
    Par bigboomshakala dans le forum SharePoint
    Réponses: 10
    Dernier message: 31/03/2010, 09h55
  3. [Upload] Upload de GROS fichiers en php
    Par osscour dans le forum Langage
    Réponses: 21
    Dernier message: 26/05/2006, 14h13
  4. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43
  5. [Upload] Upload de gros fichiers
    Par Rémiz dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2006, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo