Para crear/manipular archivos te recomiendo que eches un vistazo a las
FAQs, a las
Funciones del foro, y uses la opción
Buscar. Ya se ha tratado muchas veces la cuestion.
Básicamente es:
Código:
Const ParaLectura = 1, ParaEscritura = 2, ParaAnexar = 8
Dim fso, MiArchivo
Set fso = server.CreateObject("Scripting.FileSystemObject")
Set MiArchivo = fso.OpenTextFile("c:\archivoPrueba.txt", ParaAnexar, True)
MiArchivo.Write("Esto es una prueba.")
MiArchivo.Close
La otra cuestion es un poco más complicada. Para enviar un archivo al cliente, éste habrá de haber pulsado primero alguna opcion o botón (evento).
Una vez provocado el evento, puedes hacer todo lo relacionado con los archivos que te he puesto mas arriba. Finalizada la tarea, deberás "dibujar" el archivo en el navegador como archivo. :D No te asustes. Yo uso este script:
Código:
Response.Buffer = True
Response.Clear
server.ScriptTimeout = 60000
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 1
name1 = request.QueryString("n1")
name2 = request.QueryString("n2")
strFilePath = ""
strFileName = name1
set FSO = Server.CreateObject("Scripting.FileSystemObject")
if fso.FileExists(strFileName) then
set oFile = FSO.GetFile(strFileName)
strFileSize = oFile.Size
'Response.Clear
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile(strFileName)
strFileType = right(strFileName, len(strFileName) - instrrev(strFileName, "."))
Select Case strFileType
Case "asf"
ContentType = "video/x-ms-asf"
Case "avi"
ContentType = "video/avi"
Case "doc"
ContentType = "application/msword"
Case "zip"
ContentType = "application/zip"
Case "xls"
ContentType = "application/vnd.ms-excel"
Case "gif"
ContentType = "image/gif"
Case "jpg", "jpeg"
ContentType = "image/jpeg"
Case "wav"
ContentType = "audio/wav"
Case "mp3"
ContentType = "audio/mpeg3"
Case "mpg", "mpeg"
ContentType = "video/mpeg"
Case "rtf"
ContentType = "application/rtf"
Case "htm", "html", "txt"
ContentType = "text/html"
Case "asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & name2
Response.AddHeader "Content-Length", strFileSize
' In a Perfect World, Your Client would also have UTF-8 as the default
' In Their Browser
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite(objStream.Read)
Response.Flush
objStream.Close
Set objStream = Nothing
else
response.Write("archivo " & strFileName & " no existe")
end if
Como ves, necesita dos valores:
n1 = Nombre y ruta del archivo (en formato Windows --> c:\miarchivo.txt )
n2 = Nombre final que quieres poner al archivo
Este script provoca la descarga del archivo en el equipo del cliente. Como puedes apreciar lo que hace es decirle al navegador que el script es un archivo (usando el response.ContentType) y dibujandolo despues de forma binaria:
' Aqui le decimos el nombre
Response.AddHeader "Content-Disposition", "attachment; filename=" & name2
' Aqui su peso
Response.AddHeader "Content-Length", strFileSize
' UTF-8 o iso-8859-1 --> Usa UTF-8, es mas standard
Response.Charset = "UTF-8"
' La madre del cordero:
Response.ContentType = ContentType
' Y su padre :D Para que no nos salga el texto en el navegador
' y que nos descarge el archivo, debes hacerlo de forma binaria
Response.BinaryWrite(objStream.Read)
Te recomiendo que hagas todas las tareas en un solo archivo (las de escritura del archivo y las de mandar el archivo) Te facilitará las cosas.
suerte!
Un saludo