<%On Error Resume Next%>
<%
Class miGrua
Public sub TomarDatos()
dim Datos, cantidadBytes, posActual, posSiguiente, largoPalabra
dim nombre, datosArchivo, tipo
cantidadBytes=Request.TotalBytes
Datos = Request.BinaryRead(cantidadBytes)
posActual=1
'impr Datos, cantidadBytes
'Response.write "<br><br><br>"
'Extraer nombre del album
posActual = InStrB(posActual, Datos, aBinario("NombreAlbum")) + 13
posActual = InStrB(posActual, Datos, aBinario(Chr(13))) + 2
posSiguiente=InStrB(posActual, Datos, aBinario("---")) - 2
largoPalabra=posSiguiente-posActual
NombreAlbum = aCadena(MidB(Datos, posActual,largoPalabra))
'Extraer tipo de album
posActual = InStrB(posActual, Datos, aBinario("TipoAlbum")) + 11
posActual = InStrB(posActual, Datos, aBinario(Chr(13))) + 2
posSiguiente=InStrB(posActual, Datos, aBinario("---")) - 2
largoPalabra=posSiguiente-posActual
TipoAlbum = aCadena(MidB(Datos, posActual,largoPalabra))
'Response.write "Alb: " & TipoAlbum & "<br>"
'Response.write "Alb" & NombreAlbum & "<br>"
'Registrar el nuevo album
codigoAlbum = RegistrarAlbum(NombreAlbum, Session("Usuario"),TipoAlbum)
if(codigoAlbum=-1)then
Response.write "<br> Error interno: Imposible guardar el album <br>"
ObjectContext.SetAbort
exit sub
end if
Response.write "<h2>Sus recuerdos están seguros en su<BR>ESPACIO PERSONAL</h2>"
Response.write "<table align=Center border=1>"
Response.write "<tr><td colspan=2 align=center><b>" & NombreAlbum & "</b></td></tr>"
do until posActual=10 or posActual>=cantidadBytes
posActual = InStrB(posActual, Datos, aBinario("filename=")) + 10
if(posActual>10)then
'Extraer nombre de la imagen
posSiguiente=InStrB(posActual, Datos, aBinario("Content-Type"))-3
largoPalabra=posSiguiente-posActual
nombre = aCadena(MidB(Datos, posActual,largoPalabra))
nombre = Right(nombre, Len(nombre)-InStrRev(nombre,"\"))
'Response.write nombre & "<br>"
'Extraer tipo de archivo (.gif, .jpj, etc)
tipo = Right(nombre, Len(nombre)-InStrRev(nombre,".")+1)
'Response.write tipo & "<br>"
'Quitar extención al nombre
nombre = Left(nombre, Len(nombre)-Len(tipo))
'Response.write nombre & "<br>"
'Extraer datos de archivo
posActual = InStrB(posActual, Datos, aBinario("Content-Type")) + 14
posActual = InStrB(posActual, Datos, aBinario(Chr(13))) + 2
posSiguiente=InStrB(posActual, Datos, aBinario("---")) - 2
largoPalabra=posSiguiente-posActual
largoDatos=largoPalabra
datosArchivo = MidB(Datos, posActual,largoPalabra)
'impr datosArchivo, largoPalabra
'Response.write "<br>"
'Extraer tipo de la imagen (Publica o privada)
posActual = InStrB(posActual, Datos, aBinario("TipoImagen"))
posActual = InStrB(posActual, Datos, aBinario("P"))
posSiguiente=InStrB(posActual, Datos, aBinario("---")) - 2
largoPalabra=posSiguiente-posActual
TipoImagen = aCadena(MidB(Datos, posActual,largoPalabra))
'Response.write TipoImagen & "<br>"
if(Len(datosArchivo)>1)then
'Guardar los Archivos de imagen
guardarArchivo nombre, datosArchivo, largoDatos, tipo, TipoImagen, exito
'Registrar los Archivos de imagen en la base de datos
if(exito="OK")then
codigo=RegistrarImagen(codigoAlbum, nombre & tipo, TipoImagen)
if(codigo=-1)then
Response.write "<br> Error interno: Imposible guardar la imagen <br>"
ObjectContext.SetAbort
exit sub
end if
end if
end if
end if
loop
Response.write "</table>"
ObjectContext.SetComplete
%>
<!--#include file= "includes\Error.inc"-->
<%
end sub
Private Function aBinario ( str )
Dim i, strbuf
for i = 1 to Len(str)
strbuf = strbuf & ChrB (AscB (Mid(str, i, 1)))
next
aBinario = strbuf
End Function
Private Function aCadena ( bin )
Dim i, bytebuf
for i = 1 to LenB(bin)
bytebuf = bytebuf & Chr(AscB(MidB(bin, i, 1)))
next
aCadena = bytebuf
End Function
Private Sub impr( bin, bytes )
Dim i, bytebuf
for i = 1 to bytes
Response.write Server.HTMLEncode(ChrB(AscB(MidB(bin, i, 1))))
next
End Sub
Private Sub guardarArchivo(byRef nombre, byRef datos, bytes, ext, TipoImagen, byRef result)
dim ruta, archivo, aceptar, aux, subindice
select case(lCase(ext))
case ".gif"
aceptar="si"
case ".jpg"
aceptar="si"
case else
aceptar="no"
end select
if(aceptar="no")then
Response.write "Formato no permitido: " & ext & "<br>"
result="NO"
exit sub
end if
ruta=request.serverVariables("APPL_PHYSICAL_PATH") & "Archivos\"
archivo = ruta & nombre & ext
set confile = createObject("scripting.filesystemobject")
subindice=1
aux=""
do while(confile.fileExists(archivo))
aux = nombre & subindice
subindice=subindice+1
archivo = ruta & aux & ext
loop
if(aux<>"")then nombre=aux
'Response.write archivo & "<br>"
set fich = confile.CreateTextFile(archivo, true)
for i=3 to bytes
c=Chr(AscB(midB(datos,i,1)))
fich.write(c)
next
fich.close()
Response.write "<tr>"
Response.write "<td>" & nombre & ext & ", " & tamanio(bytes)
Response.write "<br>" & TipoImagen & "</td>"
Response.write "<td align=center><img src=Archivos/" & nombre & ext & " WIDTH=120 HEIGHT=100></td>"
Response.write "<tr>"
Set confile=Nothing
set fich=Nothing
%>
<!--#include file= "includes\Error.inc"-->
<%
result="OK"
End Sub
Private Function tamanio( bytes )
Dim MB, KB, m, z
m=1024*1024
MB=0
KB=0
do while(bytes>m)
MB=MB+1
bytes=bytes-m
loop
do while(bytes>1024)
KB=KB+1
bytes=bytes-1024
loop
z=""
if(MB>0)then z = MB & " MB "
if(KB>0)then z = z & KB & " KB "
if(bytes>0)then z = z & bytes & " bytes"
tamanio=z
End Function
Private Function RegistrarAlbum(nombreAlbum, usuario, TipoAlbum)
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Conn = Server.CreateObject("ADODB.Connection")
if(Conn.state)then
Conn.Close()
end if
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd.mdb"))
'Ver si existe el album
sqlTxt = "SELECT CodigoAlbum FROM Albunes WHERE NombreAlbum = '" & nombreAlbum & "'"
set rs=createobject("ADODB.Recordset")
if(rs.state)then
rs.Close()
end if
rs.LockType = adLockOptimistic
rs.Open sqltxt, Conn
'Si no existe, crearlo
if(rs.eof)then
if(rs.state)then
rs.Close()
end if
sqltxt="INSERT INTO Albunes(NombreAlbum,Usuario,TipoAlbum) Values("
sqltxt=sqltxt & "'" & nombreAlbum & "'"
sqltxt=sqltxt & ",'" & usuario & "'"
sqltxt=sqltxt & ",'" & TipoAlbum & "')"
Set Cmd = CreateObject("ADODB.Command")
Cmd.CommandText = sqltxt
Cmd.ActiveConnection=Conn
Cmd.Execute
Set Cmd=Nothing
'Ver si está correctamente registrado
sqlTxt = "SELECT CodigoAlbum FROM Albunes WHERE NombreAlbum = '" & nombreAlbum & "'"
set rs=createobject("ADODB.Recordset")
if(rs.state)then
rs.Close()
end if
rs.LockType = adLockOptimistic
rs.Open sqltxt, Conn
if(rs.eof)then
codigo=-1
else
codigo=rs.Fields("CodigoAlbum")
Response.write "<h2><B>Un nuevo album a sido creado.</B></h2>"
end if
else
codigo=rs.Fields("CodigoAlbum")
Response.write "<h2><B>El album ya existe, las imagenes serán anexadas a éste.</B></h2>"
end if
Set Conn=Nothing
set rs=Nothing
%>
<!--#include file= "includes\Error.inc"-->
<%
RegistrarAlbum=codigo
End Function
Private Function RegistrarImagen(codigoAlbum, imagen, TipoImagen)
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Conn = Server.CreateObject("ADODB.Connection")
if(Conn.state)then
Conn.Close()
end if
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd.mdb"))
sqltxt="INSERT INTO Imagenes(codigoAlbum,imagen,TipoImagen) Values("
sqltxt=sqltxt & "'" & codigoAlbum & "'"
sqltxt=sqltxt & ",'" & imagen & "'"
sqltxt=sqltxt & ",'" & TipoImagen & "')"
'Response.Write sqltxt & "<BR>"
Set Cmd = CreateObject("ADODB.Command")
Cmd.CommandText = sqltxt
Cmd.ActiveConnection=Conn
Cmd.Execute
Set Cmd=Nothing
sqlTxt = "SELECT CodigoAlbum FROM Imagenes WHERE CodigoAlbum = " & codigoAlbum & " AND imagen = '" & imagen & "'"
'Response.Write sqltxt & "<BR>"
set rs=createobject("ADODB.Recordset")
if(rs.state)then
rs.Close()
end if
rs.LockType = adLockOptimistic
rs.Open sqltxt, Conn
if(rs.eof)then
codigo=-1
else
codigo=rs.Fields("CodigoAlbum")
end if
Set Conn=Nothing
set rs=Nothing
%>
<!--#include file= "includes\Error.inc"-->
<%
RegistrarImagen=codigo
End Function
end class
%>