'=================================================== = ==================
'
'Utiliza ASP para implementar la carga/descarga de archivos sin componentes
'
'Introducción a la función
'Guarde los datos del archivo cargado en la base de datos, que puede manejar múltiples archivos cargados en el formulario
' Aplicable a varias bases de datos, utilice el método ADO para conectarse a la base de datos
' Este ejemplo utiliza la base de datos ACCESS: zj.mdb
'Tabla:tb_img(id int(columna de incremento automático),ruta de texto(255) Directorio para guardar los archivos cargados
',fname text(250) guarda el nombre del archivo cargado, type test(250) guarda el tipo del archivo cargado
', el objeto img ole guarda el contenido del archivo cargado
'
'
'=================================================== = ==================
'=================================================== = ==================
'
'Página HTML para cargar archivos: zj_up.htm
'
'=================================================== = ==================
<html>
<cabeza>
<title>Sube el archivo y guárdalo en la base de datos</title>
</cabeza>
<cuerpo>
<nombre del formulario="form1" enctype="multipart/form-data" método="post" action="zj_up.asp">
<p>
<tipo de entrada="archivo" nombre="archivo">
<tipo de entrada="enviar" nombre="Enviar" valor="Subir">
</p>
</formulario>
</cuerpo>
</html>
'=================================================== = ==================
'
'Cargue el archivo y guárdelo en la página ASP de la base de datos: zj_up.asp
'
'=================================================== = ==================
<%
Respuesta.Expira=0
Función f_Bin2Str(ByVal sBin)
Atenuar iI, iLen, iChr, iRe
iRe = ""
Si no es nulo (sBin) entonces
iLen = LenB(sBin)
Para iI = 1 a iLen
iChr = MedioB(sBin, iI, 1)
Si AscB(iChr) > 127 Entonces
iRe = iRe y Chr(AscW(MidB(sBin, iI + 1, 1) & iChr))
iI = iI + 1
Demás
iRe = iRe y Chr(AscB(iChr))
Terminar si
Próximo
Terminar si
f_Bin2Str = iRe
Función final
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Fuente de datos=" & server.mappath("zj.mdb")
iSql="tb_img"
establecer iRe=Server.CreateObject("ADODB.Recordset")
iRe.Abrir iSql,iConcStr,1,3
iLen=Solicitud.TotalBytes
sBin=Solicitud.BinaryRead(iLen)
iCrlf1 = ChrB(13) y ChrB(10)
iCrlf2 = iCrlf1 y iCrlf1
iLen = InStrB(1, sBin, iCrlf1) - 1
iSpc = IzquierdaB(sBin, iLen)
sBin = MedioB(sBin, iLen + 34)
iPos1 = InStrB(sBin, iCrlf2) - 1
Mientras iPos1 > 0
iStr = f_Bin2Str(IzquierdaB(sBin, iPos1))
iPos1 = iPos1 + 5
iPos2 = InStrB(iPos1, sBin, iSpc)
iPos3 = InStr(iStr, "; nombre de archivo=""") + 12
Si iPos3 > 12 Entonces
iStr = Medio(iStr, iPos3)
iPos3 = InStr(iStr, Chr(13) & Chr(10) & "Tipo de contenido: ") - 2
iFn = Izquierda(iStr, iPos3)
Si iFn <> "" Entonces
iRe.AñadirNuevo
ire("ruta")=izquierda(iFn,instrrev(iFn,""))
iRe("fname") = mid(iFn,instrrev(iFn,"")+1)
iRe("tipo") = Medio(iStr, iPos3 + 18)
iRe("img").AppendChunk MidB(sBin, iPos1, iPos2 - iPos1)
iRe.Actualización
Terminar si
Terminar si
sBin = MedioB(sBin, iPos2 + iLen + 34)
iPos1 = InStrB(sBin, iCrlf2) - 1
Encaminarse a
iRe.cerrar
establecer iRe=Nada
%>
'================================================ = ====================
'
' Página ASP para descargar datos: zj_down.asp
'
'=================================================== = ==================
<%
Respuesta.Buffer=verdadero
Response.Clear
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Fuente de datos=" & server.mappath("zj.mdb")
establecer iRe=server.createobject("adodb.recordset")
iSql="tb_img"
iRe.open iSql,iconcstr,1,1
Response.ContentType=ire("tipo")
Respuesta.BinaryWrite iRe("img")
iRe.close
establecer iRe=Nada
%>