2011-02-22 7 views
0

Je travaille sur une application de remplacement pour une application héritée. En raison de certaines limitations de conception de l'application héritée, les «pièces jointes» sont stockées en tant que chemin de chaîne dans notre base de données (généralement les fichiers stockés sur un lecteur partagé Windows). L'application héritée peut alors 'ouvrir' les pièces jointes en ouvrant un shell de commande Windows et en exécutant le chemin donné.Liaison au contenu local dans une application Web

L'application héritée (Oracle Forms) est progressivement supprimée par une application Web J2EE basée sur JSF. La nouvelle application doit pouvoir «ouvrir» ou créer un lien vers ces pièces jointes héritées d'une manière ou d'une autre. Est-ce seulement possible? J'ai essayé d'utiliser les URL file: //, mais il y a beaucoup de mises en garde à leur utilisation. Ils ne fonctionnent que sur des hôtes distants dans IE, firefox/chrome (et d'autres navigateurs modernes je suppose) empêchent les URL de fichiers locaux.

Travailler uniquement sur IE est quelque chose qui peut être vécu avec cette fonctionnalité particulière. J'ai également rencontré un problème avec les chemins de fichiers avec des espaces. Pour une raison quelconque, si IE rencontre un chemin de fichier avec des espaces dedans, disons

C:\Documents and Settings\user123\My Documents\testing\someFile.txt 

il refuse d'ouvrir ce lien. Le navigateur remplace automatiquement les espaces ('') avec son URL encodée '% 20'.

Le lien associé Je tentais ressemble à:

<a href="file:///C:\Documents and Settings\user123\My Documents\testing\someFile.txt">link</a> 

Y at-il quelque chose de simple à ce que je suis absent? Ou y a-t-il un moyen plus facile de le faire? Je n'étais pas tout à fait sûr de quoi étiqueter ceci comme si n'hésitez pas à retagger comme nécessaire.

Répondre

7

Après quelques vaste Je tests ont abouti aux conclusions suivantes:

  • seulement IE ouvrir le fichier: // liens qui se trouvent sur une page d'un hôte distant, d'autres navigateurs les bloquer purement et simplement et rien ne se produira lorsqu'un utilisateur clique sur eux.
  • IE ne fichier ouvert: // URL qui pointent vers un fichier qui se trouve sur un lecteur réseau
    • Si un utilisateur clique sur un fichier: // lien pointant vers un fichier sur le disque local de l'utilisateur, rien ne arriver et ils n'obtiendront aucune erreur.
  • Si un utilisateur clique sur un lien fichier: // pointant vers un fichier réseau, il s'ouvre dans le navigateur, si possible.
  • Si le fichier: // url pointe vers un emplacement non valide (lecteur réseau non mappé, fichier sur un lecteur réseau inexistant), Windows affiche une erreur contextuelle.
  • espaces dans le chemin du fichier doit être URL codé avec% 20

Espérons que cela aide quelqu'un d'autre qui cherche des informations sur urls de fichiers.

0

Si vous utilisez des guillemets doubles (") dans le chemin vers le fichier (vous aurez probablement besoin d'URL encode ceux-ci comme %22), les fenêtres seront OK avec le chemin complet:

<a href="file:///%22C:\Documents and Settings\user123\My Documents\testing\someFile.txt%22">link</a> 
+0

Je n'arrive pas à faire fonctionner cela même dans un simple fichier html local pointant vers un autre fichier local. Peut-être qu'il y a des évasions de personnages spéciaux qui me manquent? – BuffaloBuffalo

Questions connexes