Bonjour,
J'ai créé un système d'upload de fichiers CSV pour l'application sur laquelle je travaille actuellement. L'import et l'export fonctionnent parfaitement mais je rencontre cependant un petit souci.
Lorsque j'exporte des données de mon application, un fichier CSV est créé et celui-ci est automatiquement enregistré dans un dossier "export". Je peux alors le lire et le modifier comme bon me semble. Il m'est ensuite possible d'importer un fichier CSV afin d'exécuter la procédure dans le sens inverse. Tout fonctionne, les insertions dans la base de données se font exactement comme je le souhaite et le fichier est placé dans un répertoire "import". Cependant, il m'est impossible de lire et modifier les fichiers placés dans ce dossier puisque je n'ai aucun droit dessus. L'application, quant à elle, parvient bien à lire ce fichier pour en extraire les données, mais il lui est impossible de le supprimer en fin de script.
Les droits sur les dossiers "export" et "import" sont les mêmes et j'y ai accès en lecture comme en écriture. Ce sont les droits sur les fichiers enregistrés dans le dossier "import" qui ne sont pas suffisants et je ne parviens pas à comprendre pourquoi... Si vous pouvez m'éclairer, voici mon code :
Script d'export :
Script d'import :
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 /* ****************************** */ /* ** ECRITURE DANS LE FICHIER ** */ /* ****************************** */ $fileName = "export/EXPORT_".date('d-m-Y_His').".csv"; if( $file = @fopen( "../../".$fileName, 'w' ) ) { foreach ( $data as $row ) { fputcsv( $file, $row ); } fclose( $file ); // Insertion d'une entrée dans la table historique $db->insertAction( 'EXP', $fileName ); // Si le nombre d'imports dans l'historique dépasse la limite, on supprime l'entrée la plus ancienne $historySize = $db->getHistorySize('EXP'); if( $historySize > HISTORY_LIMIT ) { $olderFile = $db->deleteOldHistory('EXP'); unlink( "../../".$olderFile ); } echo $fileName; } else { echo "Impossible d'ouvrir le fichier. Vérifiez que le fichier export_".date('d-m-Y').".csv n'est pas en cours d'exécution et réessayez de lancer l'export."; }
Merci beaucoup !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Cas où un fichier est importé if( isset( $_FILES['csvFile'] ) ) { // On affichera le message dans une boite de dialogue echo "<div style=\"display: none;\" id=\"importResult\">"; // Vérification de l'extension et de la taille du fichier $extension = strtolower( substr( strrchr( $_FILES['csvFile']['name'], '.'), 1 ) ); $maxSize = 1048576; if( $extension == 'csv' && $_FILES['csvFile']['size'] <= $maxSize ) { $newFile = "import/IMPORT_".date('d-m-Y_His').".csv"; // Déplacement du fichier téléchargé dans le dossier /export if( move_uploaded_file( $_FILES['csvFile']['tmp_name'], $newFile ) ) { // Traitement du fichier et fin du code
PS : je précise que j'ai tenté la solution du chmod sans succès, ce qui n'a rien d'étonnant puisque je travaille dans une entreprise où nous ne sommes pas administrateurs de nos postes.
Partager