Ouvrir un fichier et le renvoyer sur le buffer d'IIS ...

Signaler
-
Messages postés
20
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
16 mars 2005
-
Bonjour,
Je souhaiterais ouvrir un fichier PDF dans mon prog ASP et renvoyer le fichier PDF sur la sortie de l'ASP !

Donc, en fait, je souhaite que lorsque l'utilisateur clique sur "affiche_pdf.asp?id=256648", le fichier 256648.pdf se charge dans le navigateur MAIS sans que l'adresse réelle du fichier 256648.pdf ne soit transmise au navigateur, donc pas de Response.redirect... :question)

Ca ne doit pas être trop dur mais je suis débutant en ASP et j'aurais besoin de votre aide...

Merci de votre attention...

Frédéric ~ ffeytons@allforwebmaster.org

4 réponses

Bon alors j'espère ne pas dire de bétise :
Le plus simple est de créer un nouvelle fenêtre avec Javascript tout en intégrant le nom du fichier avec de l'asp. Pour la fenêtre en JavaScript, il suffit d'enlever le barre d'adresse, les menus etc...

<script>
window.open("<%=request.querystring("id")%>.pdf","PDF File","scrollbars,resizable");
</script>

Ce que tu peux faire est de créer un bouton qui déclenche l'ouverture de la fenêtre...
Mais le problème c'est que ce n'est justement pas la solution qui me convient, il me faudrait une solution pour que l'utilisateur n'aie aucun moyen de voir l'adresse, ici clic droit sur la page, boum on a l'adresse !

Moi, je voudrait que le fichier PDF soit la sortie du programme ASP !

un genre de :

Je lis le fichier
Response.ContentType("application/pdf")
Response.Write(contenu fichier)

mais comment lire le fichier dans le bon format (binaire je suppose ?)

Merci beaucoup,

Frédéric ~ ffeytons@allforwebmaster.org
Messages postés
1
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
28 janvier 2005

La bonne question est : Pourquoi est ce que tu veux faier ça, car
peut-importe ce que tu fais, il y a toujours une manière d'aller
chercher l'adresse



Ou tout simplement, il y a beaucoup de gens qui on settés leur
navigateur pour que les pdg ouvrent avec Acrobat et pas dans la fenêtre
du navigateur.



Ou ils l'enregistrent sur leur poste..



Je crois que tu devrais y aller plus simplement, ne te casse pas la
tête, toutes tes solutions peuvent êtres contourné par un utilisateur
moindrement brillant...



Byebey



Caro
Messages postés
20
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
16 mars 2005

Bonjour,

Voici un peu de code qui pourra t'aider.
Je l'ai testé sur IIS 6 et il fonctionne bien.

Si tu veux sécuriser l'accès, il te suffit de tester la présence d'une variable de session que tu auras initialisée lors de l'authentification.

<%


Function getBinaryFile(strFilePath)
Dim TypeBinary, oStream
TypeBinary = 1 ' Indicates a binary file
' Create the object
Set oStream = Server.CreateObject("ADODB.Stream")
' Open our file
oStream.Open
' Retreive binary data from the file
oStream.Type = TypeBinary
oStream.LoadFromFile strFilePath
' Return the binary data to the caller
getBinaryFile = oStream.read
' Destroy the ADO object
Set oStream = Nothing
End Function


Fic = request("fichier")
rep = request("rep")


response.clear()


Set FSO = Server.CreateObject("Scripting.FileSystemObject")


select case rep
case "1"
dir = Server.MapPath("rep1")
case "2"
dir = Server.MapPath("rep2")
case else
dir = Server.MapPath("rep3")


end select


chemin = dir & "" & fic


if FSO.FileExists(chemin) Then
Response.Addheader "Content-Disposition", "inline; filename=" & "ado.pdf"
Response.ContentType ="application/pdf"
response.flush()
response.BinaryWrite getBinaryFile(chemin)
else
response.write "Fichier non disponible"
end if
%>
Pour encore plus de sécurité, je te conseille aussi de ne pas mettre les fichiers pdf dans un répertoire accessible depuis le Web (donc pas dans inetpub/wwwroot/monapp/rep1/). Danc ce cas tu ne pourras plus utiliser Server.MapPath("rep1") mais "c:\rep1" pour la variable dir.

Cette solution ne peut pas être contournée par un utilisateur "moindrement brillant
"

Bon code.
Thierry