Upload y grabar registros en BD

12/04/2007 - 06:49 por Jorge Vega | Informe spam
Saludos a todos, ojala me puedan dar una ayuda.
Resulta ser que requiero crear una pàgina ASP que me permita subir archivos
a mi servidor y que a la hora de presionar el botón Agregar me grabe en una
tabla de la BD (Access) 4 campos de texto los cuales llevan cierta
información descriptiva del archivo incluyendo el nombre del archivo.

Alguien ha visto algun sitio donde tengan un ejemplo de como hacer esto para
ver si puedo ajustarla a lo que requiero.

Muchas gracias por la ayuda que me puedan brindar.

Jorge Vega

Preguntas similare

Leer las respuestas

#1 Miguel Gonzalez
12/04/2007 - 10:45 | Informe spam
Hola Jorge:

Puedes consultar:

http://www.aspin.com/func/search?tr...=0&y=0



Saludos!

Miguel

Jorge Vega escribió:
Saludos a todos, ojala me puedan dar una ayuda.
Resulta ser que requiero crear una pàgina ASP que me permita subir archivos
a mi servidor y que a la hora de presionar el botón Agregar me grabe en una
tabla de la BD (Access) 4 campos de texto los cuales llevan cierta
información descriptiva del archivo incluyendo el nombre del archivo.

Alguien ha visto algun sitio donde tengan un ejemplo de como hacer esto para
ver si puedo ajustarla a lo que requiero.

Muchas gracias por la ayuda que me puedan brindar.

Jorge Vega


Respuesta Responder a este mensaje
#2 Jorge Vega
13/04/2007 - 06:43 | Informe spam
Muchas gracias Miguel por tu aporte.

El problema que se me presentò al querer correr algunos de los ejemplos, que
al momento de abrir los asp se muestra un error 404.
Utilizo el IIS de XP Pro SP2
El codigo del que estoy probando es el siguiente

demo.asp (Hoja principal)
<%
'************************************* Funcion para cambiar el nombre al
archivo **************
Function cambiar_nombre(archivo_original,este_folder_variable,letras)
directorio_final = server.MapPath(".") & este_folder_variable ' esto es
grabar el archivo subido abajo del directorio actual en este_folder_variable

x = revisar(directorio_final)

If x = "1" then
Response.write "Se creó un directorio especialmente para ti."
Else
Response.write "Se agrego el siguiente archivo a tu directorio..."
End if


Randomize
cadena_variable = ""
temp = directorio_final & archivo_original
temp2 = temp
caracteres_a_agregar = letras

' caracteres_a_agregar es la cantidad de caracteres que se agregaran al
inicio
' del nombre del archivo original

For i = 1 to caracteres_a_agregar
cadena_variable = cadena_variable & chr(int(Rnd * 26) + 65) '65 es el ASCII
para la "A"
Next
' temp = cadena_variable & "-" & temp 'asi queda el archivo modificado
temp = directorio_final & cadena_variable & "-" & archivo_original 'asi
queda el archivo modificado

' ahora se verificara que el "nuevo archivo" exista o no, si existe se
vuelve a ejecutar este fun
Dim fso, msg
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(temp)) Then
cambiar_nombre(temp2) ' aqui se manda de vuelta a "randomizar" el nombre
porque ya existe
Else
cambiar_nombre = temp ' aqui se regresa el nombre del archivo ya modificado
y verificado que es unico
exit function
End If

End Function
'************************************* Fin de funcion para cambiar el nombre
al archivo **************
%>
<%
'*************************************************** revisar que exista un
directorio, si no, que lo haga
Function revisar(folder)
Dim fso, msg,f
Set fso = CreateObject("Scripting.FileSystemObject")
If not (fso.FolderExists(folder)) Then
Set f = fso.CreateFolder(folder)
revisar = "1"
Else
revisar = "0"
End If
End Function
%>

<%response.buffer=true
Func = Request("Func")
if isempty(Func) then
Func = 1
end if
Select case Func
case 1
'You do not need to use this form to send your files.
'However you should not give your submit button a NAME or ID.
%>
<h2>Seleccione un archivo para subir al servidor.</h2>
<FORM ENCTYPE="multipart/form-data" ACTION="default.asp?func=2" METHOD=POST
id=form1 name=form1>
<table>
<tr><td>Escriba la ruta completa y el nombre del archivo que desea
subir.</td></tr>
<tr><td>-o-</td></tr>
<tr><td>Presione el botón [Browse] para buscar el archivo.<br><br></td></tr>
<tr><td>Luego presione el botón [Subir archivo].<br><br></td></tr>
<tr><td><Strong>Archivo... </strong></td></tr>
<tr><td><INPUT NAME=File1 SIZE0 TYPE=file><br></td></tr>
<tr><td><INPUT NAME=File2 SIZE0 TYPE=file><br></td></tr>
<tr><td><INPUT NAME=File2 SIZE0 TYPE=file><br></td></tr>
<tr><td align=left><input type="submit" value="Subir
Archivo"><br><br></td></tr>
<tr>
<td>NOTE: Se recibir&aacute; una confirmaci&oacute;n una vez
conclu&iacute;do
el proceso.<br>
<br></td></tr>
</table>
<%
case 2
ForWriting = 2

adLongVarChar = 201
lngNumberUploaded = 0
limite_de_tamano = 5000000 'cada uno de los archivos no puede medir mas de 5
millones de bytes
caracteres_a_agregar = 5 ' cantidad de letras que agreraran al inicio del
nombre del archivo
este_folder_variable = "\upload\" 'este es un folder abajo de la pagina
actual donde se grabaran los archivos
' extensiones1 = ".jpg"
' extensiones2 = ".gif"
' extensiones3 = ".doc"
' extensiones4 = ".ppt"
' extensiones5 = ".xls"
' extensiones6 = ".zip"

Response.write "Existe un limite de " & limite_de_tamano & " bytes para cada
uno de los archivos a subir..." & "<br>"
Response.write "Se agregaran " & caracteres_a_agregar & " caracteres al
inicio del nombre de los archivos renombrados..." & "<br>"
Response.write "Los archivos se grabaran en " & este_folder_variable & " que
estara abajo de esta pagina..." & "<br>"
' Response.write "Solo se pueden subir archivos con ext... " & extensiones1
& extensiones2 & extensiones3 & extensiones4 & extensiones5 & extensiones6 &
"<br>"

response.write "<hr>"

'Get binary data from form

noBytes = Request.TotalBytes
binData = Request.BinaryRead (noBytes)

'convery the binary data to a string
Set RST = CreateObject("ADODB.Recordset")
LenBinary = LenB(binData)

if LenBinary > 0 then
RST.Fields.Append "myBinary", adLongVarChar, LenBinary
RST.Open
RST.AddNew
RST("myBinary").AppendChunk BinData
RST.Update
strDataWhole = RST("myBinary")
End If

'get the boundry indicator

strBoundry = Request.ServerVariables ("HTTP_CONTENT_TYPE")
lngBoundryPos = instr(1,strBoundry,"boundary=") + 8
strBoundry = "--" & right(strBoundry,len(strBoundry)-lngBoundryPos)

'Get first file boundry positions.

lngCurrentBegin = instr(1,strDataWhole,strBoundry)
lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1

'*******************************************
do while lngCurrentEnd > 0

'Get the data between current boundry and remove it from the whole.
strData = mid(strDataWhole,lngCurrentBegin, lngCurrentEnd - lngCurrentBegin)
strDataWhole = replace(strDataWhole,strData,"")

'Get the full path of the current file.
lngBeginFileName = instr(1,strdata,"filename=") + 10
lngEndFileName = instr(lngBeginFileName,strData,chr(34))

'Make sure they selected at least one file.
if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 then
Response.Write "<h2> The following error occured.</h2>"
Response.Write "You must select at least one file to upload"
Response.Write "<br><br>Hit the back button, make the needed corrections and
resubmit your information."
Response.Write "<br><br><input type='button' onclick='history.go(-1)'
value='<< Back' id='button'1 name='button'1>"
Response.End
end if

'There could be one or more empty file boxes.
if lngBeginFileName <> lngEndFileName then
strFilename = mid(strData,lngBeginFileName,lngEndFileName -
lngBeginFileName)
'Loose the path information and keep just the file name.
tmpLng = instr(1,strFilename,"\")
do while tmpLng > 0
PrevPos = tmpLng
tmpLng = instr(PrevPos + 1,strFilename,"\")
loop
FileName = right(strFilename,len(strFileName) - PrevPos)
este_folder_variable = "\archivos-subidos\" 'este es un folder abajo de la
pagina actual

FileName =
cambiar_nombre(Filename,este_folder_variable,caracteres_a_agregar) 'aqui es
donde se le cambia el nombre al archivo
' y se regresa con la ruta ya dentro de este_folder_variable
Filename2 = Filename
tmpLng = instr(1,Filename2,"\") ' ahora obtendres solo el nombre del archivo
originado
do while tmpLng > 0 ' esto es solo es para hacer el link en la pagina
PrevPos = tmpLng ' asi que puedes borrar esta parte
tmpLng = instr(PrevPos + 1,FileName2,"\")
loop

FileName3 = right(FileName2,len(FileName2) - PrevPos)
este_folder_variable_inverso = "archivos-subidos/"

'Get the begining position of the file data sent.
'if the file type is registered with the browser then there will be a

lngCT = instr(1,strData,"Content-Type:")

if lngCT > 0 then
lngBeginPos = instr(lngCT,strData,chr(13) & chr(10)) + 4
else
lngBeginPos = lngEndFileName
end if

'Get the ending position of the file data sent.

lngEndPos = len(strData)

'Calculate the file size.

lngDataLenth = lngEndPos - lngBeginPos

tamano = lngDatalenth

If tamano<limite_de_tamano then

%>
<a href="<%=este_folder_variable_inverso & filename3%>">Da un click aqui
para que veas el archivo que subiste.</a> Con: <%=lngDatalenth%> Bytes<br>
<%
'Get the file data

strFileData = mid(strData,lngBeginPos,lngDataLenth)

'Create the file.

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FileName, ForWriting, True)
f.Write strFileData
set f = nothing
set fso = nothing

lngNumberUploaded = lngNumberUploaded + 1

'Get then next boundry postitions if any.
Else
Response.write "El archivo es demasiado grande (mas de 5000000 bytes ) y no
sera subido..."
End if
End if
lngCurrentBegin = instr(1,strDataWhole,strBoundry)
lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1
loop
Response.Write "<h2>File(s) Uploaded</h2>"
Response.Write lngNumberUploaded & " files have been uploaded.<br>"
Response.Write "<br><br><input type='button' onclick='document.location=" &
chr(34) & "default.asp" & chr(34) & "' value='<< Back to Listings'
id='button'1 name='button'1>"
End select
%>
</form>


UPLOAD.ASP
<%
Dim Upload ' definimos la variable a utilizar

' creamos el objeto SAFileUp para poder subir el archivo
Set Upload = Server.CreateObject("SoftArtisans.FileUp")

' Indicamos la ruta donde queremos que se guarde el archivo
Upload.Path = Server.MapPath("/uploads")

' comprobamos que el formulario no se envíe vacío
if not Upload.IsEmpty Then

' si el formulario no esta vacío, subimos el archivo.
' en ruta establecida anteriormente se guardara el archivo
Upload.Save

'comprobamos que no haya errores
if Err <> 0 Then
Response.Write("Ocurrió un error al intentar subir el archivo.")
else
Response.Write("Se guardo correctamente el archivo: " &
Upload.ShortFilename)
end if
else
' si se envía el formulario vacío mostramos este mensaje
Response.Write("Por favor, seleccione un archivo para realizar el upload")
end If

' destruimos el objeto
Set Upload = Nothing
%>




"Miguel Gonzalez" escribió en el mensaje
news:
Hola Jorge:

Puedes consultar:

http://www.aspin.com/func/search?tr...=0&y=0



Saludos!

Miguel

Jorge Vega escribió:
Saludos a todos, ojala me puedan dar una ayuda.
Resulta ser que requiero crear una pàgina ASP que me permita subir
archivos
a mi servidor y que a la hora de presionar el botón Agregar me grabe en
una
tabla de la BD (Access) 4 campos de texto los cuales llevan cierta
información descriptiva del archivo incluyendo el nombre del archivo.

Alguien ha visto algun sitio donde tengan un ejemplo de como hacer esto
para
ver si puedo ajustarla a lo que requiero.

Muchas gracias por la ayuda que me puedan brindar.

Jorge Vega


Respuesta Responder a este mensaje
#3 Miguel Gonzalez
13/04/2007 - 09:51 | Informe spam
Hola Jorge.

El error 404 es que el servidor no encuentra el recurso (página ASP en
este caso) que se le ha solicitado.

¿Qué URL tecleas en la barra de direcciones del navegador?

¿Las páginas ASP (demo.asp, default.asp y upload.asp) están juntas en un
directorio que pueda ser accedido por el IIS?

¿"default.asp" está incluída entre las páginas por defecto del IIS (las
que sirve cuando no se especifica página, sino sólo directorio)?


Saludos!

Miguel

Jorge Vega escribió:
Muchas gracias Miguel por tu aporte.

El problema que se me presentò al querer correr algunos de los ejemplos, que
al momento de abrir los asp se muestra un error 404.
Utilizo el IIS de XP Pro SP2
El codigo del que estoy probando es el siguiente

demo.asp (Hoja principal)

Respuesta Responder a este mensaje
#4 Jorge Vega
13/04/2007 - 23:12 | Informe spam
Estoy indicando directamente //localhost/upload/demo.asp Esta se muestra
perfectamente, pero a la hora de presionar el boton para que suba el archivo
es cuando se muestra el error.

Todas las pàginas se encuentran dentro de upload y tambien tengo a demo.asp
como pàgina default en el IIS


"Miguel Gonzalez" escribió en el mensaje
news:
Hola Jorge.

El error 404 es que el servidor no encuentra el recurso (página ASP en
este caso) que se le ha solicitado.

¿Qué URL tecleas en la barra de direcciones del navegador?

¿Las páginas ASP (demo.asp, default.asp y upload.asp) están juntas en un
directorio que pueda ser accedido por el IIS?

¿"default.asp" está incluída entre las páginas por defecto del IIS (las
que sirve cuando no se especifica página, sino sólo directorio)?


Saludos!

Miguel

Jorge Vega escribió:
Muchas gracias Miguel por tu aporte.

El problema que se me presentò al querer correr algunos de los ejemplos,
que
al momento de abrir los asp se muestra un error 404.
Utilizo el IIS de XP Pro SP2
El codigo del que estoy probando es el siguiente

demo.asp (Hoja principal)

Respuesta Responder a este mensaje
#5 Miguel Gonzalez
16/04/2007 - 18:34 | Informe spam
//localhost/upload/demo.asp



Supongo que querrás decir "http://localhost/upload/demo.asp"

Al margen, el ejemplo no necesita de archivos externos, todo está
contenido en la propia página "demo.asp". Sólo teniendo esta página
funciona "casi" perfectamente:

1) Hay un error, en la línea de definición del formulario:

<FORM ENCTYPE="multipart/form-data" ACTION="default.asp?func=2"
METHOD=POST id=form1 name=form1>

El valor del "Action" debería ser "demo.asp?func=2" (o el nombre que le
hayas puesto a la página)

2) A continuación de la línea que contiene:

If lngBeginFileName <> lngEndFileName Then



...hay que reinicializar la variable "PrevPos" a cero:

If lngBeginFileName <> lngEndFileName Then
PrevPos = 0


Saludos!
Miguel


Jorge Vega escribió:
Estoy indicando directamente //localhost/upload/demo.asp Esta se muestra
perfectamente, pero a la hora de presionar el boton para que suba el archivo
es cuando se muestra el error.

Todas las pàginas se encuentran dentro de upload y tambien tengo a demo.asp
como pàgina default en el IIS


"Miguel Gonzalez" escribió en el mensaje
news:
Hola Jorge.

El error 404 es que el servidor no encuentra el recurso (página ASP en
este caso) que se le ha solicitado.

¿Qué URL tecleas en la barra de direcciones del navegador?

¿Las páginas ASP (demo.asp, default.asp y upload.asp) están juntas en un
directorio que pueda ser accedido por el IIS?

¿"default.asp" está incluída entre las páginas por defecto del IIS (las
que sirve cuando no se especifica página, sino sólo directorio)?


Saludos!

Miguel

Jorge Vega escribió:
Muchas gracias Miguel por tu aporte.

El problema que se me presentò al querer correr algunos de los ejemplos,
que
al momento de abrir los asp se muestra un error 404.
Utilizo el IIS de XP Pro SP2
El codigo del que estoy probando es el siguiente

demo.asp (Hoja principal)







Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida