2009-07-09 6 views
2

J'ai créé un pseudo contrôle d'utilisateur pour un site écrit en ASP classique. Le contrôle est simplement une page ASP (avec les en-têtes HTML complets et le corps) qui réside dans un iframe dans la page parente. Le but était de créer une interface de type AJAX pour télécharger des fichiers de façon asynchrone (la page parent contient un grand formulaire et je ne voulais pas avoir à télécharger les fichiers et soumettre le reste du formulaire en même temps).
Le problème est, je suis confronté à de nombreux problèmes avec les URL relatives utilisées dans le contrôle iframe page/utilisateur. En fonction de la page de l'iframe est un enfant, l'emplacement de base url par rapport semble changer selon le répertoire que cette page est enDétermination d'une URL absolue pour une ressource en utilisant vbscript/classic asp

Exemple:. www.website.com/directory1/application1.asp

... 
<form> 
    <input> 
    ... 
    <iframe src="../controls/FileUpload.asp"/> 
    ... 
</form> 
... 

www.website.com/directory1/directory2/application2.asp

... 
<form> 
    <input> 
    ... 
    <iframe src="../../controls/FileUpload.asp"/> 
    ... 
</form> 
... 

www.website.com/controls/FileUpload.asp

... 
<form method="post" enctype="multipart/form-data" action="FileUpload.asp"><!--problem here--> 
    <input type="file"> 
    <input type="submit"/> 
</form> 

Les chemins iframe src fonctionnent correctement (notez que celui qui est enterré dans un répertoire plus profond a un double point supplémentaire). Mais dans le code de la page FileUpload.asp, les URL relatives ne fonctionnent pas de manière cohérente. L'URL que j'ai dans l'attribut d'action pour la balise de formulaire fonctionne si vous chargez simplement la page telle qu'elle est, pas dans un iframe d'une autre page. Vous pouvez le changer en "../controls/FileUpload.asp" et il fonctionnera sur la première page d'application, mais vous devez ajouter un autre "../" pour qu'il fonctionne sur la deuxième page d'application.
Je me demandais si peut-être il y a un moyen avec vbscript pour trouver l'URL absolue d'un certain fichier. J'utilise un fichier d'inclusion dans lequel je pourrais coder en dur ceci, mais je ne préférerais pas que ce soit possible. D'autres idées?

Répondre

4

Vous pouvez également il suffit de mettre un chemin absolu à partir de la racine, par exemple action = "/ controls/FileUpload.asp"

+0

Oui. C'est tout. Stupide de moi vraiment. – rdevitt

+0

Pas de problème, en fait, je le fais toujours comme ça, peu importe ce que je fais si je déplace quelque chose, ajouter un dossier supplémentaire ou quoi que ce soit. – Breadtruck

+0

En fait, j'ai fini par utiliser Request.ServerVariables ("URL") puisque je ne fais que poster sur la même page. Cela semble être un moyen assez cohérent d'accéder à la ressource indépendamment du serveur sur lequel il est hébergé et des sous-répertoires du site. – rdevitt

0

Je ne sais pas si vous cherchez peut-être pour

<% 
Response.Write Server.MapPath("./foo.txt") 
%> 

Some usefull code de Thorarin que je viens de voir dans un different post

Rechercher ThisPage() Fonction

+0

Non, cela me donne seulement le chemin absolu du fichier dans le système de fichiers. J'ai besoin d'une URL (c'est-à-dire que j'ai besoin de 'www.website.com/controls/FileUpload.asp' pas 'c: \ inetpub \ wwwroot \ website \ controls \ FileUpload.asp') – rdevitt

Questions connexes