IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Response.binarywrite avec fichier


Sujet :

ASP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut Response.binarywrite avec fichier
    Bonjour,

    j'ai trouvé des exemples de Response.binarywrite pour des images stockées dans un champ BLOB de SGBD

    j'ai une appli tierce qui peut lire des fichiers JPEG avec une url statique
    genre :'http://monserveur/image1.jpg'

    je peux entièrement paraméter l'url d'accès à l'image aussi je voudrai le "gruger" en faisant 'http://monserveur/monimage.asp?im=1'

    je sais faire dans mon navigauteur en mettant une balise image mais je voudrais renvoyer une image brute dans mon appli tierce sans aucune balise ni texte afin que l'application qui l'appele considère le contenu comme un vrai JPG

    je me disais qu'avec ce code ca marcherait mais non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Response.ContentType = "image/jpeg"
    ...
    'pathf = chemin d'accés au fichier JPG à afficher
    Response.BinaryWrite(pathf)
    qd je l'affiche dans mon navigateur je vois bien que ca marche pas j'ai une petite image avec une croix rouge

    je pense qu'il faut lire le fichier en binaire avant, mais comment ?

    merci de vos conseils

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Si ton image est dans un blob, c'est déjà du binaire.
    Que donne un click droit sur la "petite image avec une croix rouge", puis propriétés ?


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    merci de ta réponse

    mais en fait dans ce cas mes images ne sont pas dans un blob du sgbd

    mais dans des fichiers sur le disque dur

    en fait j'aurai voulu que mon asp lise le fichier en binaire et le rebalance comme une image JPEG brute

    avec un response.binarywrite

    en fait la question comment lire un fichier image du disque dur en binaire, le mettre dans une variable et le renvoyer directement dans le navigateur comme une image ?

  4. #4
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Re

    tu peux essayer de lire ton image comme un fichier texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set fso=server.createobject("scripting.filesystemobject")
    set im=fso.openTextFile(server.mapPath("images/monimage.jpg"))
    fpath=im.readAll()
    
    Response.ContentType = "image/jpeg"
    Response.BinaryWrite(pathf)
    euh ... je ne garantis pas trop que ça marche


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  5. #5
    Poumtschak
    Invité(e)
    Par défaut
    Si la soluce de roro06 ne donne rien, il y a peut-être matière à idée dans ce vbs :
    http://www.paulsadowski.com/WSH/getremotebinaryfile.htm


  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    bonjour,

    pour roro06, il me semble que FSO peut manipuler tous les fichiers mais lit seulement les fichiers textes (lut dans d'autres forums)

    Poumtschak, cette solution est super et marche vraiement bien.

    sauf quand au lieu de sauvegarder sur le disque local, j'essaye de le renvoyer dans le navigateur comme une image JPEG avec un response.binarywrite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <%
     
       '-------------------------------------------------------   
       ' Clear out the existing HTTP header information
       '-------------------------------------------------------
       Response.Expires = 0 
       Response.Buffer = TRUE
       Response.Clear
     
       '-------------------------------------------------------
       ' Change the HTTP header to reflect that an image is being passed.
       '-------------------------------------------------------
       Response.ContentType = "image/jpeg"
     
    'GetRemoteBinaryFile.vbs
    ImageFile = "back.gif"
    DestFolder = "C:\"
    URL = "http://www.paulsadowski.com/images1/back.gif"
     
    Set xml = CreateObject("Microsoft.XMLHTTP")
    xml.Open "GET", URL, False
    xml.Send
     
    set oStream = createobject("Adodb.Stream")
    Const adTypeBinary = 1
    Const adSaveCreateOverWrite = 2
    Const adSaveCreateNotExist = 1 
     
    oStream.type = adTypeBinary
    oStream.open
    oStream.write xml.responseBody
     
    ' Do not overwrite an existing file
    'oStream.savetofile DestFolder & ImageFile, adSaveCreateNotExist
     
    ' Use this form to overwrite a file if it already exists
    ' oStream.savetofile DestFolder & ImageFile, adSaveCreateOverWrite
     
    response.BinaryWrite(oStream.read)
    Response.End
     
    'oStream.close
     
    'set oStream = nothing
    'Set xml = Nothing
    %>
    là j'ai le message suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Erreur de compilation Microsoft VBScript error '800a0401' 
     
    Fin d'instruction attendue 
     
    /iisHelp/common/500-100.asp, line 11 
     
    Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP Dim strMethod, lngPos, datNow, strQueryString, strURL
    --------------------------------------------------------------------------^
    Objet Response error 'ASP 0106 : 80020005' 
     
    Types non correspondants 
     
    /test_binaryfile_xml.asp, line 39 
     
    Un type de données non pris en charge s'est présenté.
    une idée ?

    merci d'avance

  7. #7
    Poumtschak
    Invité(e)
    Par défaut
    Citation Envoyé par lunab54 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Objet Response error 'ASP 0106 : 80020005' 
    Types non correspondants 
    /test_binaryfile_xml.asp, line 39 
    Un type de données non pris en charge s'est présenté.
    une idée ?
    Bé l'instruction ligne 39 c'est bien celle-ci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.BinaryWrite(oStream.Read)
    Manifestement, il y a une différence de typage entre ce que renvoie le Microsoft.XMLHTTP et le binaire attendu par l'Adodb.Stream.

    Presqu'au pif, je dirais que le oStream.write xml.responseBody renvoie du texte, HTTP oblige. Dans un premier temps, il faudrait essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Write(oStream.Read)
    Et puis mettre un type MIME sur "image/jpeg" alors que dans l'exemple tu envoies du GIF, c'est peut-être limite.

    Sinon, en cherchant les méthodes de l'objet ADODB.Stream, Google renvoie tout de suite cette page :
    http://support.microsoft.com/kb/276488

    Il ne doit pas manquer grand chose pour toucher au but.

    [edit]
    A la relecture, j'ajouterais que si l'appli tierce sait lire des images à partir d'URL, c'est qu'elle utilise le protocole HTTP, donc le format texte. L'utilisation du BinaryWrite ne se justifie peut-être donc pas.
    [/edit]
    Dernière modification par Poumtschak ; 15/02/2010 à 22h09.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    merci de ton soutien

    sinon le http://support.microsoft.com/kb/276488

    je l'avais déjà essayé et ca marche impecable si le fichier est sur un disque local du serveur web !

    seulement dés que l'adresse du fichier à traiter est une URL ca ne marche plus...

    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.ContentType = "image/jpeg"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Write(oStream.Read)
    c'est mieux...

    mais j'ai une petite image avec une croix rouge et donc mon image ne s'affiche pas

    j'ai essayé de changer la requête Microsoft.XMLHTTP en la passant de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    oStream.type = 1
    oStream.open
    oStream.write xml.responseBody
    response.Write(oStream.read)
    à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    oStream.type = 0
    oStream.open
    oStream.write xml.responseText
    response.Write(oStream.read)
    mais là je repars sur un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Les arguments sont de type incorrect, en dehors des limites autorisés ou en conflit les uns avec les autres
    j'ai fait varier les types et les response un peu dans tous les sens mais rien de bien au final

    je continue à chercher...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    Yes !

    en remettant tout au propre, j'ai trouvé ce que je voulais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    'chemin accés au fichier
    pathf = "/image/monimage.jpg"
     
       '-------------------------------------------------------   
       ' Paramétrage URL photo à charger
       '-------------------------------------------------------
        URL_SERVER = Request.ServerVariables("server_name")
        URL = "http://" + Request.ServerVariables("server_name") + pathf
        'Response.write(URL)
     
       '-------------------------------------------------------   
       ' Clear out the existing HTTP header information
       '-------------------------------------------------------
       Response.Expires = 0 
       Response.Buffer = TRUE
       Response.Clear
     
       '-------------------------------------------------------
       ' Change the HTTP header to reflect that an image is being passed.
       '-------------------------------------------------------
       Response.ContentType = "image/jpeg"
     
       '-------------------------------------------------------
       ' open the stream
       '-------------------------------------------------------
        Const adModeRead = 1  'Read Only'
        const adTypeBinary = 1 'Binary Type'
     
        set oStream = createobject("Adodb.Stream")
        oStream.type = adTypeBinary
        oStream.open "URL=" + URL,adModeRead
     
        response.BinaryWrite(oStream.read)
        Response.End
     
        oStream.close
        set oStream = nothing
    ca marche super !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. genérer un PDF avec Response.BinaryWrite
    Par feanor91 dans le forum ASP
    Réponses: 11
    Dernier message: 12/07/2012, 08h59
  2. Problème avec Response.Binarywrite
    Par Gential dans le forum ASP.NET
    Réponses: 5
    Dernier message: 08/09/2011, 16h06
  3. Nommer le fichier PDF avec un Response.BinaryWrite() c#
    Par alexfayard dans le forum ASP.NET
    Réponses: 6
    Dernier message: 28/10/2008, 10h44
  4. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17
  5. Réponses: 4
    Dernier message: 25/08/2003, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo