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

MkFramework Discussion :

Comment uploader et gérer les fichiers pdf dans une application avec MKF?


Sujet :

MkFramework

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut Comment uploader et gérer les fichiers pdf dans une application avec MKF?
    Bonjour,

    J'ouvre ce sujet car j'ai découvert le dossier data/upload ainsi que le plugin plugin_upload et que je veux tester tout ça. Mais d'abord j'ai quelques questions pour être sûre de bien comprendre le fonctionnement de l'upload dans MKF avant de commencer.
    En consultant l'API je suis arrivée sur le tutoriel "Permettre l'upload d'un fichier". Voici mes questions:
    1- Au lieu de ceci:
    Photo de profil : <input type="file" name="profilPicture" />
    peut-on utiliser le plugin_form et mettre ceci?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr>
    		<th width="200">Chargez votre lettre de motivation (pdf |max. 1Mo) :</th>
    		<td><input type="hidden" name="MAX_FILE_SIZE" value="1048580" />
    			<?php echo $oForm->getInputUpload('lettre_motivation',array('accept'=>".pdf")) ?>
    		</td>
    	</tr>
    2- A présent j'ai suivi les instruction du tuto dans mon controleur, ce qui me donne ceci:
    Code php : 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
    public function _new(){
    		$tMessage=$this->processSaveUpload();
     
    		$oCandidatures=new row_candidatures;
     
    		$oView=new _view('candidatures::new');
    		$oView->oCandidatures=$oCandidatures;
     
    				$oView->tJoinmodel_candidats=model_candidats::getInstance()->getSelect();		$oView->tJoinmodel_utilisateurs=model_utilisateurs::getInstance()->getSelect();		$oView->tJoinmodel_staut_cands=model_statut_cands::getInstance()->getSelect();
     
    		$oPluginXsrf=new plugin_xsrf();
    		$oView->token=$oPluginXsrf->getToken();
    		$oView->tMessage=$tMessage;
     
    		$this->oLayout->add('main',$oView);
    		$this->oLayout->title="e-tmg - Dépot de candidature";
    	}
    private function processSaveUpload(){
    		if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
    			return null;
    		}
     
    		$oPluginXsrf=new plugin_xsrf();
    		if(!$oPluginXsrf->checkToken( _root::getParam('token'))){ //on verifie que le token est valide
    			return array('token'=>$oPluginXsrf->getMessage() );
    		}
     
    			$oCandidatures=new row_candidatures;	
     
    		//je renseigne automatiquement certains champs de l'objet candidature
    		$iIdCand=$_SESSION['id'];
    		$iIdPoste=_root::getParam('idPoste',null);
    		$oCandidatures->candidat_id = $iIdCand;
    		$oCandidatures->poste_id = $iIdPoste;
    		$oCandidatures->date_depot = date("Y-m-d");
    		$oCandidatures->statut_cands_id = 1;
     
     
    		$sColumn='lettre_motivation';
    		$oPluginUpload=new plugin_upload($sColumn);
     
    		if($oPluginUpload->isValid()){
    			 $sNewFileName='data/upload/'.$sColumn.'_Candidat_'.$iIdCand.'_Poste_'.$iIdPoste.'_'.date('Ymdhis');
    			$oPluginUpload->saveAs($sNewFileName);
    			$oCandidatures->lettre_motivation=$oPluginUpload->getPath();
    			if($oCandidatures->save()){
    			//une fois enregistre on redirige (vers la page liste)
    			_root::redirect('default::succesCandidature');
    			}else{
    				return $oCandidatures->getListError();
    			}
    		}else{
    			return $oCandidatures->getListError();
    		}
     
     
    	}
    Est-ce bien? Car à l’exécution j'ai une erreur a propos de plugin_upload que je ne déchiffre pas. En plus le dossier data/upload est toujours vide.

    Merci pour l'aide

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Il vaut mieux passer par le builder

    le module est devenu multi fichier
    En générant via le builder, j'obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $tColumnUpload=array('src');
    		if($tColumnUpload){
    			foreach($tColumnUpload as $sColumnUpload){
    				$oPluginUpload=new plugin_upload($sColumnUpload);
    				if($oPluginUpload->isValid()){
    					$sNewFileName=_root::getConfigVar('path.upload').$sColumnUpload.'_'.date('Ymdhis');
     
    					$oPluginUpload->saveAs($sNewFileName);
    					$oImage->$sColumnUpload=$oPluginUpload->getPath();
    				}
    			}
    		}

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    le module est devenu multi fichier
    En générant via le builder, j'obtiens
    Je ne comprend pas. de quel module s'agit-il?

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    pardon je parlais du plugin (plugin upload)

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Donc je dois télécharger a nouveau le plugin et le mettre dans mon dossier plugin?
    Je ne comprend pas quand tu parle de génération avec le builder. pour uploader depuis un formulaire le builder doit intervenir? (je rappelle que j'ai déjà créé le formulaire avec un champ de type $oForm->getInputUpload(), voir premier message)

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Je dis que dans le builder, on peut génerer via le module CRUD un champ alimenté par le plugin d'upload

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Ah d'accord, j'ai testé et ça upload effectivement le fichier et ça le renomme. Dans la base de donnée j'ai le chemin vers le fichier dans le dossier data/upload.
    Merci.
    Doit-on passer par le même plugin pour afficher le fichier uploadé dans un nouvel onglet?

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Non, le plugin ne sert qu'a uploader, apres, votre image / fichier étant stoqué dans data/upload, il suffit de faire un simple lien vers ce fichier

    ou passer par une page de "forçage" de téléchargement , par exemple pour eviter d'ouvrir le fichier dans le navigateur si l'extension est connue (image, video..)

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Dac, j'essayerais cela. merci encore

  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Je passe en résolu alors

  11. #11
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    je voudrais en savoir plus sur la méthode à utiliser afin d'afficher le fichier uploadé dans une nouvelle fenetre. voici un exemple:
    Code html : 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
    <table class="tb_list">
    	<tr>
    		
    		<th>Référence</th>
    		<th>Poste</th>
    		<th>Etat candidature</th>
    		<th>Motivations</th>
    
    		<td></td>
    	</tr>
    	<?php if($this->tCandidatures):?>
    		<?php foreach($this->tCandidatures as $oCandidatures):?>
    		<tr <?php echo plugin_tpl::alternate(array('','class="alt"'))?> >
    			<td><?php echo $oCandidatures->reference ?></td>	
    			<td><a href="<?php echo $this->getLink('postes::show',array('id'=>$oCandidatures->id))?>"><?php  echo $oCandidatures->intitule?></a></td>
    			<td><?php echo $oCandidatures->libelle ?></td>
    			<td><a href="<?php echo $this->getLink('???????')?> target=_blank ">Voir la lettre</a></td>
                  </tr>	
    		<?php endforeach;?>
    	<?php else:?>
    		<tr>
    			<td colspan="2">Aucune candidature à des postes</td>
    		</tr>
    	<?php endif;?>
    </table>
    sachant que j'ai un attribut $oCandidatures->lettre_motiv qui contient $oPluginUpload->getPath().
    merci pour les réponses.

  12. #12
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Cela dépend du type de fichier, pour un zip, pdf and co

    un simple lien avec $oCandidatures->lettre_motiv suffira (le navigateur telechargera)

    sinon un fichier php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php readfile($oCandidatures->lettre_motiv);

  13. #13
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Comme ceci ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="<?php echo $this->getLink($oCandidatures->lettre_motiv)?>" target=_blank>Voir la lettre</a></td>

  14. #14
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Oui dans l'idée

  15. #15
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Bizarre car cette syntaxe m'ouvre un nouvel onglet mais avec la même page que celle ou se trouvait le lien (la même page de départ quoi!)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="<?php $this->getLink($oCandidatures->lettre_motiv) ?>" target=_blank >Voir la lettre</a></td>

  16. #16
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Exscusez moi, j'avais lu un peu vite:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="<?php echo $oCandidatures->lettre_motiv ?>" target=_blank >Voir la lettre</a></td>

    pas de getLink

  17. #17
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    clap, clap, clap. merci pour le soutient, je vous en suis très reconnaissante. a bientôt

  18. #18
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Bonjour à tous,

    J'aimerais savoir s'il y a un moyen pour supprimer un fichier dans le dossier data/upload et le remplacer par un autre en cas d'action 'edit' sur un enregistrement.
    Merci pour les réponses

  19. #19
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Il y a une fonction de suppression php, (unlink)
    Mais pour ce que vous demandez il vaudrait modifier le plugin qui fait exprès de générer un id unique pour chaque image uploadée

  20. #20
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    L'upload ne marche plus lorsque je passe l'objet '$oPluginUpload' en session pour le récupérer quelques pages plus tard et le sauvegardé. Je ne sais pas pourquoi.
    Voici ce que j'ai fais. Sur ma premiere page j'ai un champ pour uploadé un fichier. Je le recupere et je le passe en session comme ceci:
    Code php : 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
    $tColumnUpload=array('cv_fichier_num');
    		if($tColumnUpload){
    			foreach($tColumnUpload as $sColumnUpload){
    				$oPluginUpload=new plugin_upload($sColumnUpload);
    				if($oPluginUpload->isValid()){
    					$sNewFileName=_root::getConfigVar('path.upload').$sColumnUpload.'_c_'.$c.'_'.date('Ymdhis');
     
    					//$oPluginUpload->saveAs($sNewFileName);
    					//$oCandidat->cv_fichier_num=$oPluginUpload->getPath();
    					$oCandidat->cv_fichier_num = 'cv';
    				}
    			}
    		}
     
           if($oCandidat->isValid()){
               $_SESSION['oCandidat']=$oCandidat;
    		   $_SESSION['cv']=$oPluginUpload;
    		   $_SESSION['name']=$sNewFileName;
               //une fois enregistre on redirige (vers la page etape2)
               _root::redirect('inscriptions::etape2');
           }else{
               return $oCandidat->getListError();
           }
    puis je le récupere à l'étape 3 comme ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $oCandidat=$_SESSION['oCandidat'];
    			$oPluginUpload=$_SESSION['cv'];
    			$sNewFileName=$_SESSION['name'];
    				$oPluginUpload->saveAs($sNewFileName);
    				$oCandidat->cv_fichier_num=$oPluginUpload->getPath();
    			$oCandidat->save();
    Dans ma table 'candidats' la colonne 'cv_fichier_num' est bien renseignée avec la valeur de '$sNewFileName' mais dans le dossier data/upload le document n'y est pas.
    Pouvez vous m'aider pour ce cas?
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2015, 10h18
  2. [WM18] Insertion de fichier PDF dans une application Android
    Par trvbv dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 05/02/2015, 11h55
  3. Réponses: 4
    Dernier message: 17/04/2010, 11h50
  4. Réponses: 9
    Dernier message: 13/04/2006, 12h40
  5. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 12h02

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