Bonjour à tous,
Je souhaite récupérer le contenu d'un fichier qui correspond à une base de données SQLite stockée sur le serveur. Pour cela, j'utilise AJAX ainsi qu'un script PHP dont le rôle est de récupérer le nom du fichier en question. De cette façon je ne donne pas le chemin pour y accéder côté serveur. Voici comment j'envoie le contenu du fichier avec le script PHPLoadSQLiteDatabase.php.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $path = $_SERVER['DOCUMENT_ROOT'] . 'ViktorIDE/Users/' . $usrLogin; $path .= '/' . $fileName . 'sqllite3'; // 4- Ouvre la base de données $fileRef = fopen($path,'r'); if (! ($fileRef === false)) { // 5- On l'expédie $fileSize = filesize($path); $contents = fread($fileRef,$fileSize); echo $contents; fclose($fileRef); }
De l'autre coté
J'ai essayé également d'ouvrir la base de données caractère par caractère. J'ai adapté le code JavaScript afin de transformer le caractère en octet, sans succès.
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 var xhr = new XMLHttpRequest(); var db; xhr.open('GET','PHPViktorIDE/PHPLoadSQLiteDatabase.php?Name='+inName,true); xhr.responseType = 'arraybuffer'; xhr.onload = function(e) { var uInt8Array = new Uint8Array(this.response); var subDB = new SQL.Database(uInt8Array); db = new JSSQLEngine(subDB); // test pour vérifier que tout est OK var res = db.execSQLString("SELECT FORMULA FROM VIK_FORMULAS WHERE REFINTCLASS='C12'"); }
Étant donné que la base de données peut avoisiner les 100 Mo, il est donc nécessaire de ne pas transformer les données à expédier pour ne pas accroître la taille. Je pensais recourir à base 64.
Lorsque j'exécute le code, le fichier correspondant à la base de données provoque une erreur qui dit que le fichier est corrompu ou que la base est cryptée.
N'hésitez pas à me poser des questions pour compléter ma présentation. Par avance merci de votre aide.
Partager