OVH Cloud OVH Cloud

coder quelque chose de plus malin que

24 réponses
Avatar
Christophe Lohr
Bonjour,
voici mon souci : j'ai un document html composé de plusieurs fichiers
(quelques fichiers html, plus quelques images). La difficulté est que je
dois les déposer sur un site qui gère les fichiers via une base de
donnée. Ainsi on accède aux fichiers par une requête du style :
http://lesiteweb.org/file.php?file=/repertoire/index.html

La conséquence c'est que si mon fichier index.html fait un <IMG
SRC="image.png">, les navigateurs vont le rechercher dans
http://lesiteweb.org/image.png et non pas dans
http://lesiteweb.org/file.php?file=/repertoire/image.png

Bref, il me faut gérer cette URL de base non conventionnelle.
Naïvement, j'ai essayé avec le tag <base href=".."> dans l'entête, mais
bien entendu, il n'est pas pris en compte...

Par conséquent, je pensais qu'il devrait être possible de coder en
javascript une fonction qui d'une part repère la base de l'url du
document html en cours, puis l'ajoute à tous les liens locaux.

Est-ce que c'est faisable cela ?

Merci de votre aide.

Christophe

4 réponses

1 2 3
Avatar
Pierre Goiffon
Mickaël Wolff wrote:
Tu as déjà essayé de faire un dump d'une base de données contenant plusieurs
centaines de Mo de blobs ?


Très franchement, je ne vois pas le soucis.


Allez sur les forums dédiés aux sgbd et vous verrez que des soucis en
pratique, on en rencontre de nombreux ! L'usage de blob ou clob (et
leurs équivalents suivants les produits) apporte toujours des
contraintes en production : dans le développement autant que dans
l'exploitation (performances, volumes, ...).

Dans le cas du stockage d'images pour un site Web, je ne connais pas de
cas réels ayant conduit à choisir les blob à défaut du file system...
Mais dans d'autres cas, lorsque des applications client/serveur rentrent
en ligne de compte, ou que l'on est en réplication intersite, ou... Là,
il faut voir.


Avatar
Pierre Goiffon
Bruno Desthuilliers wrote:
cela dit, j'ai l'impression que c'est une façon de faire de plus en
plus courante : par exemple tous les sites genre dailymotion, d'albums
photos, de forum, etc. tout le contenu est dans une base de donnée
(même les documents)


En général, les métadonnées sont dans une base, et les données elle-même
stockées sur un système de fichier.


Je suppose que par "données" vous entendez les données binaires :
images, vidéos, flash etc ?


Avatar
Pierre Goiffon
Christophe Lohr wrote:
voici mon souci : j'ai un document html composé de plusieurs fichiers
(quelques fichiers html, plus quelques images). La difficulté est que je
dois les déposer sur un site qui gère les fichiers via une base de
donnée. Ainsi on accède aux fichiers par une requête du style :
http://lesiteweb.org/file.php?file=/repertoire/index.html

La conséquence c'est que si mon fichier index.html fait un <IMG
SRC="image.png">, les navigateurs vont le rechercher dans
http://lesiteweb.org/image.png et non pas dans
http://lesiteweb.org/file.php?file=/repertoire/image.png

Bref, il me faut gérer cette URL de base non conventionnelle.
Naïvement, j'ai essayé avec le tag <base href=".."> dans l'entête, mais
bien entendu, il n'est pas pris en compte...


Il me semble que vous n'abordez pas ce prb du bon côté...

Il faudrait d'abord comprendre précisément pourquoi on vous impose de
passer par ce file.php !! Ca me parait extremmement curieux...

Ensuite, des systèmes de ré-écriture d'URL performants sont disponibles
sur les principaux serveurs depuis un moment... Alors plutôt que de vous
casser la tête...

Enfin, il existe des bons logiciels de chercher/remplacer comme
BkReplaceEM sur Windows par exemple :)

Avatar
Christophe Lohr
Christophe Lohr wrote:
voici mon souci : j'ai un document html composé de plusieurs
fichiers (quelques fichiers html, plus quelques images). La difficulté
est que je dois les déposer sur un site qui gère les fichiers via une
base de donnée. Ainsi on accède aux fichiers par une requête du style :
http://lesiteweb.org/file.php?file=/repertoire/index.html

La conséquence c'est que si mon fichier index.html fait un <IMG
SRC="image.png">, les navigateurs vont le rechercher dans
http://lesiteweb.org/image.png et non pas dans
http://lesiteweb.org/file.php?file=/repertoire/image.png

Bref, il me faut gérer cette URL de base non conventionnelle.
Naïvement, j'ai essayé avec le tag <base href=".."> dans l'entête,
mais bien entendu, il n'est pas pris en compte...


Il me semble que vous n'abordez pas ce prb du bon côté...

Il faudrait d'abord comprendre précisément pourquoi on vous impose de
passer par ce file.php !! Ca me parait extremmement curieux...

Ensuite, des systèmes de ré-écriture d'URL performants sont disponibles
sur les principaux serveurs depuis un moment... Alors plutôt que de vous
casser la tête...


C'est effectivement la solution la plus élégante. Je l'ai évoquée avec
l'administrateur du site qui en fait connaît très bien le module
"rewrite_mod" de apache sur lequel tourne le site.
Il a fait une petite règle comme je lui ai demandé, mais pour l'instant
sur une instance de test du serveur, et pas sur le serveur en
production, de manière à valider que cette réécriture n'interfère pas
avec les autres choses qui tourne sur le serveur... et j'attends que
cela bascule sur le serveur de prod...


Enfin, il existe des bons logiciels de chercher/remplacer comme
BkReplaceEM sur Windows par exemple :)


Je ne connaît pas, merci pour l'info.
En fait je me suis fait une petite commande sed (forcément un peu
alambiquée ;-) ) pour préfixer les liens relatifs de mes documents html
par un chaîne que je lui passe. C'est fonctionnel, ça marche pour les
utilisateurs qui n'ont pas javascript, par contre, cela pose d'autres
problèmes : mes documents sont en principe accessibles depuis plusieurs
"endroits" du site, et suivant le contexte et les permissions globales
des utilisateurs, certains "endroits" vont fonctionner et pas d'autre,
et réciproquement. Si bien que fixer de manière statique les liens
relatifs le document html n'est pas une bonne solution... d'où le choix
de la petite fonction javascript.


1 2 3