2017-03-02 1 views
0

Je dois créer et envoyer un fichier TXT à la volée en utilisant classique ASP. Je sais comment créer ce fichier en l'enregistrant dans un répertoire puis l'envoyer en utilisant Server.CreateObject ("ADODB.Stream") ... mais ce que je voulais c'est éviter de le sauvegarder dans le répertoire et créer et envoyer à la volée . Dans ce cas, le fichier TXT est une liste d'enregistrements extraits d'une base de données MySql. Une chaque ligne ...flux ASP envoyer un fichier TXT créé à la volée

strSQL = "SELECT * FROM mydb WHERE condition='ok';" 
Set rs = my_conn.Execute(strSQL)  

    Response.Buffer = False 
    Dim objStream 
    Set objStream = Server.CreateObject("ADODB.Stream") 
    objStream.Type = 1 'adTypeBinary 
    objStream.Open 
    Response.ContentType = "application/x-unknown" 
    Response.Addheader "Content-Disposition", "attachment; filename=recordsfile.txt" 
    Response.BinaryWrite (dunno how to create a file with rs("field01") & " _ " & rs("field02") & vbnewline 
    objStream.Close 
    Set objStream = Nothing 

Est-il possible de le faire ... ce qui signifie créer un fichier dans la mémoire à strem/... envoyer orthere est pas d'autre choix que la création et l'enregistrer sur le disque avant et envoyer plus tard ??

Répondre

0

Ce qui suit va fonctionner. Remarque: mon exemple ci-dessous suppose que votre jeu d'enregistrements renvoie un champ.

strSQL = "SELECT * FROM mydb WHERE condition='ok';" 
Set rs = my_conn.Execute(strSQL) 

if not rs.eof then 

    response.contentType = "application/octet-stream" 

    response.addHeader "Content-Disposition", "attachment; filename=recordsfile.txt" 

    do until rs.eof 
     response.write rs(0).value & vbcrlf 
     rs.movenext 
    loop 

end if