Redirection d'une page sans que l'utilisateur le voit

Signaler
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008
-
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008
-
Bonjour,

Je suis commence avec asp.net et il y a des chose que je ne comprend pas.

Comment faire pour rediriger une page aspx (en c#) sur un pdf (l'ouvrir) tout ca sans que l'adresse ne change ( si une autre adresse est affiché pas de prob du moment que c'est pas l'adresse de mon pdf)?

Avez vous une idée
Jai essayé deux trois truc mais ca ne va pas.

1. response.redirect ca marche mais l'adresse s'affiche dans mon barre d'adresse

2. proccess mais ca ne lance que le processus acrobat reader sur mon serveur et ca n'ouvre pas le fichier:


System.Diagnostics.Process Processus =
new System.Diagnostics.Process();


Processus.StartInfo.FileName= "belege/zh/zh123456789012345690913239satds.pdf" ;


Processus.Start();

et


Process.Start(new ProcessStartInfo("belege/zh/zh123456789012345690913239satds.pdf"));

3. une technique trouvé sur un forum mais qui apparament ne marche pas:

Response.Write("<script>");

Response.Write(String.Format("window.open('{0}');" , Server.MapPath("belege/zh/zh123456789012345690913239satds.pdf")));
Response.Write("</script>");

Si vous avez une autre idée ne vous gené pas de poster je préfère essayé 36 chose qui ne marche pas plutot qu'aucune.

Merci a vous tous!!!

Thierry

16 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
J'allais te dire, essaye avec une frame, comme response.redirect ne
gere encore pas les frames, tu redirige vers une autre page, et tu met
deux frames, l'une avec rien donc de hauteur nulle, et l'autre avec ton
doc pdf



Tu peux aussi peut etre paser par des iframes + javascript, tu fais un
response.write() qui ecrit une fonction js, qui ecrit une iframe avec
l'adresse de ta page, au moins ca ne change pas l'adresse de la page







<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Salut jesusonline, (sympa l'alias peut-etre un peut trop biblique mais bon...)

J'ai trouvé une autre facon créer un objet active for acrobat reader et l'afficher la dedans comme on ne voit pas qu'on a été redirigé.

Mais maintenant le problème c'est de trouvé comment je peux lui dire que ma value est mon string pdf.

Je réexplique:
mon objet:
OBJECT style= "Z-INDEX: 101; LEFT: 8px; WIDTH: 800px; POSITION: absolute; TOP: 8px; HEIGHT: 600px" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" VIEWASTEXT>
PARAM NAME="_Version" VALUE="327680">
PARAM NAME="_ExtentX" VALUE="21167">
PARAM NAME="_ExtentY" VALUE="15875">
PARAM NAME="_StockProps" VALUE="0">
PARAM NAME="SRC" VALUE="<%=(liens);%>">
(il manque tout les < car sinon il m'affiche un objet activex)

Bref que faut-il mettre dans le VALUE pour qu'il prenne mon string liens j'ai essayé:

PARAM NAME ="SRC" VALUE= "<%liens%><%=(liens);%>">
et
PARAM NAME="SRC" VALUE="<%=liens%><%=(liens);%>">

Mais ca ne marche pas il me fait l'erreur suivante:

Erreur de compilation


Description : Une erreur s'est produite lors de la compilation d'une ressource requise pour répondre à cette demande. Veuillez consulter ci-dessous les détails relatifs à l'erreur en question, puis modifier votre code source de manière appropriée.

Si t'as une idée ca serait vraiment cool car la je patauge.

Merci de pour ta 1er réponse

++

" NAME ="SRC"></OBJECT<!--ENDFRAGMENT-->
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Déclare lien en public dans ta class



Public string Liens = "file.pdf"



et sinon tu as la possibilité de faire

<%=Liens%> <%Response.write("Liens")%> et peut etre
<%#Liens%> j'arrive encore pas à savoir précisement ce que fais
le #

<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-Sources.fr
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Je ne comprend pas mon code se trouve dans le pageload.

je ne peux pas faire un Public string liens;

Vs souligne string et dit ; attendu

Pour ce qui est de la syntax j'ai essayé:

liens
liens;
#liens
#liens;
=liens
=#liens
=#liens;
=liens
Response.write(liens)
Response.write(#liens);
Response.write(#liens)
Response.write(liens);
la même chose avec des guillemets

Rien n'y fait mais ca viens peut-être du public string mais comment le déclaré

Merci pour ton aide

++

Thierry
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Il faut declarer lien au niveau de la classe et non dans le page_load.



public class taclasse : UI.Page

{

public string Liens = "pdf";



private void Page_Load ....

}


Oui j'avais oublié le ; je suis un developpeur VB

<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Excelent ca marche mais maintenant le problème est différent:

comment faire pour récupérer la valeur du string liens afin de la mettre dans le public string liens2

Ce qui donne:


public
class WebForm1 : System.Web.UI.Page


{


private
void Page_Load(
object sender, System.EventArgs e)


{

string liens= (string) toto + (string) albert;
}

Public string liens2 = ?????????????????;
}

Quel est la syntax pour récupérer la valuer de lien?

Merci de m'aider c'est vraiment cool car moi je comprend presque rien et je doit me démerdé tout seul!

++

Thierry
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
public
class WebForm1 : System.Web.UI.Page



{



private
void Page_Load(
object sender, System.EventArgs e)



{

string
liens= (string) toto + (string) albert;
}

Public string liens;
}

Ca devrait marcher. Sinon



public
class WebForm1 : System.Web.UI.Page




{




private
void Page_Init(
object sender, System.EventArgs e)




{

string
liens= (string) toto + (string) albert;
}

Public string liens;
}




met tout le bordel dans le page_init, l'evenement init est declenché avec le load




<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

La je doit partir mais j'essayé (je crois que ca marche mais faut encore que je teste) et je tient au courant merci beaucoup pour ton aide je te dirais bien que tu est mon dieu mais tu serais plutot mon jésus

++

Thierry
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Salut,

J'ai essayé ca à l'air de fonctionné mais si je ne met pas de breakpoint quand je debug ca ne marche pas c'est bizzare mais tant que ca marche...

Y a encore juste un petit truc qui merde dans la barre d'état mon lien s'affiche quelque fois très rapidement mais si on se concentre ou a l'aide d'un printscreen on peux repérer l'adresse y a t'il un moyen de bloquer l'affichage dans la barre d'état (ou a la limite d'afficher autre chose afin que l'adresse ne s'affiche pas).

En tout cas je tiens d'ores et déjà à te remercier pour ta précieuse aide sans laquel je n'aurais surement pas une applic qui marche aujourd'hui.

++

Thierry
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
je peux avoir le code, car ce que tu me decris n'est pas normal.



Sache quand meme qu'avec cette méthode on peut toujours voir l'adresse du fichier, par differentes méthodes.



pour que ce soit plus le cas, faut passer par differentes techniques.

En gros il faut créer une page qui va t'ecrire le contenu de ton pdf.

tu créer une page ShowPDF.aspx et au lieu de faire pointer lien vers
l'adresse de ton pdf tu le fais pointer vers ShowPDF.aspx?id= 1, cette
page va chercher le fichier pdf correspondant à l'id 1 (bdd ou autres),
si tu veux des détails, regarde une de mes sources sur aspfr.com
j'affichais une image apres l'avoir transformé (le titre comporte
image.jpg.aspx generer une image, qqchose comme ca) si j'ai le temps,
chose rare en ce moment, je ferais peut etre une source permettant
d'envoyer des fichiers sans donner l'adresse, mais le temps est une
chose rare en ce moment ...




<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Pour le code tu le veux sur le topic ou sur ton adresse mail?

Après quelque petit test j'ai vu que c'étais une erreur a une autre place qu'il l'entrainais!
Pour ce qui est de l'adresse qui apparaissaient j'ai utlisé un code java pour y remédiez:
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Il y a toujours une erreur ? sinon j'ai pas besoin du code. Si oui, si
le code est pas trop long, poste le ici, sinon contact moi via la page
contact de mon blog http://blogs.developpeur.org/cyril/



Et si tu veux vraiment pas qu'on retrouve l'adresse de ton document, la
seule solution est de passer par ce que je t'ai dit aussi, si tu donnes
l'adresse exacte à la page, meme codé, on pourra toujours arriver à
recuperer l'adresse. En plus ma méthode te permet de savoir combien de
personnes regarde le pdf.




<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Non l'erreur n'existe plus, et ca marche mais mon boss veux une autre alternative pour toujours avoir le choix! Je sais c'est un peu bizzare.

Tu disais qu'on peux retrouvé mon pdf tout facilement j'en suis pas sur mais...

Voila comment on a concu ca on clique sur le lien du pdf et la le nom du pdf est passé dans l'attribut id - la date d'aujourd'hui et après la page aspx rajoute la date d'aujourd'hui et envoie le pdf. Je sais sais pas du super cryptage mais ca en découragera au moins un au deux.

Pour se qui est de ta solution oui ca m'intéresse mais j'ai trouvé ton truc avec ton image mais j'ai pas bien compris comment tu veux appliqué cette méthode à mes pdf?

Merci de ta réponse

Thierry
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

T'es overbooké! si c'est le cas, tant pis je trouverais une autre solution tout seul.


Sinon t'es ou?





A+





Et encore merci pour ton aide sinon je crois que j'y serais encore sur cette applic!!!





Thierry Coita
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Je suis un peu occupé avec le project hoshimi entres autres mais je vais quand meme essayer de rapidement te répondre.



Tu fais une table sql ou xml, comme tu veux, dedans tu met soit
l'adresse du pdf, ou soit meme carremment le pdf, plus facile pour
transporter le site.



Ensuite tu fais une page



Getpdf.aspx



la dedans tu recherche l'adresse du pdf en fonction de l'id que tu auras passé en paramètre.



id = request.querystring("ID")



sfilename = database.GetPdfLocationByID(ID)



et puis tu fais ca :

Response.ClearContent()


Response.WriteFile(sfilename)


Response.Flush()


Response.ContentType = "application/pdf" ' Pour content type du pdf, j'en suis pas du tout sur, faudrais vérifier.



En gros c'est comme ca, si tu met directement le pdf dans la bdd, tu
recupereras un stream, et la je sais absolument pas comment faire de
tête.

Un truc comme ca peut etre : stream1.save(response.outputStream) a la place du response.writefile



Ensuite pour afficher ton pdf, l'adresse sera pdf.aspx?id=3 comme ca
personne pourra connaitre l'adresse exacte de ton pdf. Libre à toi, de
faire la protection que tu veux dans le code de pdf.aspx, tu peux aussi
mettre un compteur etc...





Je te donne en gros ce qu'il faut faire, j'ai pas le temps de chercher,
les exemples de codes sont surement bourré d'erreur car je les ai écrit
comme ca, mais c'est le principe qui est important.



@+



<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
Messages postés
76
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
21 février 2008

Salut,

Merci de ta réponse et surtout bonne chance pour le projet Hoshimi (j'espère que tu va réussir a te qualifier et pourquoi pas gagné. mais la c'est plus de la chance mais de la classe).

Je vais essayé de voir si on peut faire comme ca mais j'en suis pas sur car il y a beaucoup des pdf environ 2000 et si on doit tous les référencé ou les mettre dans une bdd je sais pas... En tout cas merci pour ton idée je vais voir comment on va procéder.

A+

Thierry