Upload et verification d'un fichier binaire [ PHP ][ Resolu ] - PHP - Programmation
Marsh Posté le 26-10-2005 à 17:06:55
nlc a écrit : Est il donc possible en PHP d'ouvrir et lire un fichier binaire, et tester par exemple si le 18eme octet du fichier est bien un 0x17 ? |
oui, par exemple avec fopen, fread...etc
Marsh Posté le 26-10-2005 à 17:38:51
soju a écrit : oui, par exemple avec fopen, fread...etc |
Oui j'ai bien vu qu'on pouvait lire des fichiers, mais est ce ca marche aussi pour des fichiers binaires ?
Je me pose la question car la fonction fread est censée retourner une string.
Pour en avoir la certitude, pensez vous qu'en php on puisse afficher la valeur hexadecimale des 50 premiers octets du fichier suivant : http://chaenel.free.fr/court.wav
C'est a dire que le php devrait afficher sur le navigateur :
52 49 46 46 24 10 0 0 57 41 56 45 66 6D 74 20 10 0 0 0 1.....
Marsh Posté le 26-10-2005 à 17:43:40
http://fr3.php.net/mime-content-type ?
Marsh Posté le 26-10-2005 à 17:52:54
Non malheureusement cela ne suffit pas, car je dois vraiement eplucher l'entete pour verifier different parametres du fichier wav :
nombre de canaux, frequence d'echantillonnage, echantillonnage 8/16bits, etc....
Marsh Posté le 26-10-2005 à 17:53:50
nlc a écrit : Non malheureusement cela ne suffit pas, car je dois vraiement eplucher l'entete pour verifier different parametres du fichier wav : |
bein ca, tu l'avais pas encore dis !
Marsh Posté le 26-10-2005 à 18:06:27
nlc a écrit : Le but du jeu est de ne pas se baser sur l'extension du fichier, mais plutot sur l'entete wav du fichier ( car je dois aussi verifier si le fichier est bien en mono, si la frequence d'echantillonage convient, etc...) |
bl@p_psx a écrit : bein ca, tu l'avais pas encore dis ! |
Si si, il l'avait déjà dit, mais c'était pas mis en avant.
Il me semble que plusieurs personnes sur le forum on déjà réussit à relire des fichiers binaire et à les traiter. Par contre je me rapelle pas comment ils ont fait.
je me rapelle même pas quel mot clé utiliser pour rechercher ces discutions là.
Marsh Posté le 26-10-2005 à 18:14:48
Bon ca doit etre jouable, car quand je fait :
$fd = fopen( "./court.wav", "r" );
$data = fread( $fd, 20 );
echo $data[0];
fclose( $fd );
Ca m'affiche un R, normal car le 1er octet du fichier binaire est 0x52.
Le truc maintenant, c'est est-ce que je peux changer par exemple le type de data[0] en int ?
si je fait : echo (int)($data[0]);
Ca m'affiche 0
Marsh Posté le 26-10-2005 à 18:24:47
ReplyMarsh Posté le 26-10-2005 à 18:26:54
C'est bon !
Je me suis demerdé :
Code :
|
affiche :
Code :
|
On affiche bien la valeur de chaque octet du fichier ( en decimal dans mon cas )
Donc ca veut dire que je peux aller tester n'importe quel octet du fichier wav et verifier s'il convient avant de le sauver et d'envoyer une page de confirmation a l'utilisateur.
Marsh Posté le 26-10-2005 à 18:29:13
Merci !
Je viens de voir ton message et c'est exactement ce que j'ai fais !
c'est mon premier programme en PHP et faut avouer que j'ai deja des trucs pas tres catholique a faire
Marsh Posté le 26-10-2005 à 18:31:02
Merci a tous en tout cas
Marsh Posté le 26-10-2005 à 19:20:03
Bon j'arrive après la bataille, mais on ne sait jamais ça peut servir ...
Ce sont qlqs lignes adaptées d'une vieille classe binFile que j'avais fait pour sortir le texte d'un fichier ole.
l'idée est juste de travailler en binaire avec une écriture hexa, s'plus lisible pour moi ...
Code :
|
edit : faut le vouloir pour faire ça ...
Marsh Posté le 26-10-2005 à 16:54:28
Bonjour a tous !
Une petite question technique :
J'ai une page php qui permet d'uploader un fichier sur le serveur. Les fichiers a uploader sont des fichiers binaires, et plus precisemment des fichiers audio au format wav.
Le souci que j'ai, c'est qu'une fois que le fichier est sur le serveur, je dois verifier qu'il s'agit bien d'un fichier WAV. Le but du jeu est de ne pas se baser sur l'extension du fichier, mais plutot sur l'entete wav du fichier ( car je dois aussi verifier si le fichier est bien en mono, si la frequence d'echantillonage convient, etc...)
Est il donc possible en PHP d'ouvrir et lire un fichier binaire, et tester par exemple si le 18eme octet du fichier est bien un 0x17 ?
Merci pour votre aide !
Cyril
Message édité par nlc le 26-10-2005 à 18:31:21
---------------
char table[] = {112,114,105,110,116,102,40,34,37,99,37,99,37,99,34,44,49,49,48,44,49,48,56,44,57,57,41,59,0}; char* tablePtr = table; while(*tablePtr) printf( "%c",*tablePtr++ );