2017-10-02 7 views
0

J'utilise PHPExcel pour valider les fichiers csv avant de les analyser et de les stocker dans ma base de données et mon serveur. J'essaie d'utiliser les propriétés du fichier pour déterminer si le fichier a été modifié ou s'il s'agit du fichier d'origine. J'ai utilisé ce qui suit pour .xls, .xlsx avec d'excellents résultats (en utilisant le lecteur approprié); Toutefois, lors de l'utilisation de fichiers CSV, RIEN ne fonctionne correctement. En revanche, lorsque vous utilisez des fichiers CSV, cela ne fonctionne pas. J'ai renommé un doc MS-Word en .csv-> passé, édité un csv-> passé, même utilisé un .jpg-> passé. Que diable ai-je manqué ?? Toute aide serait grandement appréciée! Edit-> Je devrais noter que $created et $modifed sont une correspondance exacte quand var_dump($object) malgré avoir édité le fichier et confirmer les changements dans les propriétés du document.Détection d'un fichier csv modifié à l'aide de PHPExcel

+0

Je pense que vous avez fait une faute de frappe dans votre instruction if. Essayez de le remplacer par '' '$ created! == $ modified''' – Rulisp

+0

Le format est correct lors de l'appel des méthodes utilisant d'autres types de fichiers (dénote la correspondance exacte des variables). Quand var_dump ($ object) est appelé, les valeurs 'created' et 'modified' sont en fait une correspondance exacte. J'aurais dû préciser cela dans mon message original. Cependant, ils ne devraient pas être comme je suis en train de changer le fichier avant de le tester. Les propriétés du fichier lorsqu'il est obsédé dans Windows, afficher correctement les différentes dates. –

Répondre

0

Les valeurs de propriétés accessibles à partir de PHPExcel sont celles stockées dans le fichier lui-même et non dans les entrées de répertoire de ce fichier.

Les fichiers CSV ne possèdent pas de propriétés intrinsèques propres; CSV est purement un format de fichier de données brutes Ces méthodes de propriété permettent d'accéder aux propriétés qui existent dans d'autres formats de feuille de calcul tels que BIFF (xls) et OfficeOpenXML (xlsx) qui les prennent en charge. Le chargement d'un fichier CSV (ou d'un autre format ne prenant pas en charge les propriétés) dans PHPExcel fournit une valeur par défaut pour ces propriétés (de sorte que les appels comme ceux que vous effectuez ne déclenche pas d'erreurs fatales). n existe pas nativement dans le format en cours de chargement.

+0

cela expliquerait beaucoup mon combat. Alors la question suivante serait, y a-t-il des méthodes ou des bibliothèques (JS, PHP, JQuery, JSON ??) pour détecter un CSV édité? –

+0

fonctions PHP natives comme [filemtime] (http://php.net/manual/en/function.filemtime.php) et [filectime()] (http://php.net/manual/fr/function.filectime. php) devrait aider pour les fichiers qui existent sur votre serveur, car ils lisent les horodateurs à partir des informations de dossier .... mais si c'est un fichier téléchargé, alors vous devez détecter les temps du côté client, donc PHP n'est pas beaucoup aider, vous avez besoin de quelque chose js –

+0

J'ai accepté votre réponse Mark. Alors que PHPExcel fait un excellent travail pour obtenir les données nécessaires à partir de xls, xlsx etc., ces données n'existent pas dans CSV. En ce qui concerne la solution à mon problème spécifiquement:> écrire un programme Java qui va extraire les données de la source, crypter, puis soumettre le fichier à mon application web. De cette façon, je peux m'assurer que l'utilisateur n'a pas eu l'occasion de manipuler les données. En ce qui concerne votre dernier commentaire et l'utilisation de JS-> le même problème est présent.Ainsi, la solution Java. Et ainsi commence ma course sur la route de la destinée heureuse ... –