Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Codigo ASP para subir archivos al Servidor, ¡GRATIS! (http://www.forosdelweb.com/f15/codigo-asp-para-subir-archivos-servidor-gratis-378326/)

Boxmaster 14/03/2006 17:20

Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
:-) Saludos

para quienes han batallado mucho con otras formas de subir archivos al servidor, aqui les muestro un codigo en asp listo para usar en su sitio web.

Me costo un triunfo :corazon: conseguir aqui y alla, probar y probar codigo, pero aqui tienen una aportacion de mi parte, espero sea util para la causa personal.


:arriba: Nota: Solo tienen que crear una carpeta en la raiz de su directorio que se llame UPLOAD (ej. /upload)

UPLOAD.ASP

<%@LANGUAGE="VBSCRIPT"%>
<%response.buffer=true
Func = Request("Func")
if isempty(Func) Then
Func = 1
End if
Select Case Func
Case 1
%>

<table width="360" border="0" align="center">
<tr>
<td>
<div align="center">Selecciona una imagen para subir. </div>
</td>
</tr>
</table>
<FORM ENCTYPE="multipart/form-data" ACTION="upload.asp?func=2" METHOD=POST id=form1 name=form1>
<TABLE align="center">
<TR>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><font color="#330066" size="2">Pulsa en el botón examinar y elige el archivo
de tu ordenador.<BR>
<BR>
</font></TD>
</TR>
<TR>
<TD><font color="#330066" size="2">Luego pulsa el botón subir.<BR>
<BR>
</font></TD>
</TR>
<TR>
<TD><STRONG><font color="#330066" size="2">Nombre del archivo...</font></STRONG></TD>
</TR>
<TR>
<TD> <font size="2">
<INPUT NAME=File1 SIZE=30 TYPE=file>
<BR>
</font></TD>
</TR>
<TR>
<TD align=left>
<INPUT type="submit" value="Subir">
<BR>
<BR>
</TD>
</TR>
<TR>
<TD><font color="#330066" size="2">NOTA: Espera, recibirás una notificación
cuando el archivo haya sido subido</font><font size="2">.<BR>
<BR>
</font></TD>
</TR>
</TABLE>
<%
Case 2
ForWriting = 2
adLongVarChar = 201
lngNumberUploaded = 0

'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
'Creates a raw data file for with all da
' ta sent. Uncomment for debuging.
'Set fso = CreateObject("Scripting.FileSystemObject")
'Set f = fso.OpenTextFile(server.mappath(".") & "\raw.txt", ForWriting, True)
'f.Write strDataWhole
'set f = nothing
'set fso = nothing
'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 an
' d 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 fi
' le.
if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 Then

Response.Write "<H2> Ha ocurrido el siguiente error.</H2>"
Response.Write "Debes elegir un archivo para subir"
Response.Write "<BR><BR>Pulsa el botón volver, realiza la corrección."
Response.Write "<BR><BR><INPUT type='button' onclick='history.go(-1)' value='<< Volver' id='button'1 name='button'1>"
Response.End
End if
'There could be one or more empty file b
' oxes.
if lngBeginFileName <> lngEndFileName Then
strFilename = mid(strData,lngBeginFileName,lngEndFileName - lngBeginFileName)
'Creates a raw data file with data betwe
' en current boundrys. Uncomment for debug
' ing.
'Set fso = CreateObject("Scripting.FileSystemObject")
'Set f = fso.OpenTextFile(server.mappath(".") & "\raw_" & lngNumberUploaded & ".txt", ForWriting, True)
'f.Write strData
'set f = nothing
'set fso = nothing

'Loose the path information and keep jus
' t 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)

'Get the begining position of the file d
' ata sent.
'if the file type is registered with the
' browser then there will be a Content-Typ
' e
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 dat
' a sent.
lngEndPos = len(strData)

'Calculate the file size.
lngDataLenth = lngEndPos - lngBeginPos
'Get the file data
strFileData = mid(strData,lngBeginPos,lngDataLenth)
'Create the file.
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(server.mappath("..") & "\upload" &_
FileName, ForWriting, True)
f.Write strFileData
Set f = nothing
Set fso = nothing

lngNumberUploaded = lngNumberUploaded + 1

End if

'Get then next boundry postitions if any
' .
lngCurrentBegin = instr(1,strDataWhole,strBoundry)
lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1
loop


Response.Write "Archivo subido"
Response.Write lngNumberUploaded & " archivo ya está en el servidor.<BR>"
Response.Write "<BR><BR><INPUT type='button' onclick='document.location=" & chr(34) & "upload.asp" & chr(34) & "' value='<< Volver' id='button'1 name='button'1>"
End Select
%>
</BODY>
</HTML>


:policia: Sientanse libres de opinar y colaborar para mejorar este codigo y asi poder compartirlo con mas compañeros de foros del web.

Myakire 14/03/2006 17:24

Cita:

Me costo un triunfo conseguir aqui y alla, probar y probar codigo, pero aqui tienen una aportacion de mi parte, espero sea util para la causa personal.
¿No es este código el mismo que posteas?

Boxmaster 14/03/2006 17:43

Asi es Myakire, y me costo mucho encontrarlo, por eso lo comparto en este foro, para aquellos que batallan para subir archivos al servidor.


Espero sea de ayuda este codigo amigos.

ElAprendiz 14/03/2006 17:46

sin componentes y/o clases?
Y Funciona :arriba:

u_goldman 14/03/2006 17:47

:golpeado: Gracias por compartir el link :borracho:

VaIvan 16/03/2006 14:27

Gracias esta super bien, aclaro un detallito
 
Con el codigo tal como lo presentas, sube archivos al servidor pero no a la carpeta upload, para indicarle en donde lo ponga basta con colocar el nombre de la carpeta en la linea 156 mas o menos así:

Set f = fso.OpenTextFile(server.mappath("..") & "\upload\upload" &_

pempas 19/03/2006 17:47

Hola,

Gracias por compartir el código, tan solo hay un problema, cuando intento subir un PDF me da un error en la línea 65, más concretamente el código es:

binData = Request.BinaryRead (noBytes)

El error es:

Objeto Request error 'ASP 0104 : 80004005'

Operación no autorizada

/admin/upload.asp, línea 65

Tan solo me deja subir imágenes, ¿puede ser?

Salu2!

ElAprendiz 19/03/2006 17:49

si es un servidor gratuito puede ser

pempas 20/03/2006 09:58

No es un servidor gratuito, es un servidor dedicado... no entiendo porque pasa esto, será por permisos??

pempas 23/03/2006 04:20

Para todos aquellos a los que les pase como a mi, que sepan que si tienen un servidor dedicado y el límite del buffer se colapsa, la respuesta está aquí:

http://www.fogcreek.com/FogBugz/KB/e...mitExceed.html

Saludos y gracias a todos

sanca 18/07/2006 13:42

Subir archivos a otra maquina
 
Buenos Tardes.

Tengo un problema, y es en subir archivos a otra máquina o a un servidor remoto. Mi aplicaciçon sube archivos al servidor local allocalhost y todo, pero cuando le cambio la ruta sea a un servidor remoto me sale:

Failed uploading queryFM sql:
System UnauthorizedAccessException: Access to the path \\servidorremoto\carpteta\archivo.txt

Tengo asignado los permisos necesarios para acceder a la ruta descrita anteriormente.

Alguien puede ayudarme, please....

ClaudioK 20/09/2006 10:39

no me funciona
 
gente, buenas.
Me es de muy utilidad este codigo, pero no lo puedo hacer funcionar.

Me tirra error de que no encuentra el servidor.

Alguno sabe por que?

gracias:arriba:

ClaudioK 20/09/2006 12:41

Buenas capo. Parece que funciona pero me tira acceso denegado.

Alguno tiene idea por que?


Saludos:-)

pcarvajal 21/09/2006 10:19

consulta.. asumo que ese codigo no sirve para servidores gratuitos como brinkster o domaindlx porque no soportan FSO. Es posible "amoldarlo" de alguna manera para que pueda ser utilizado en servidores gratuitos?

k3n 25/09/2006 15:32

¿Y cómo sería sin hacer submit?
 
Holas. Yo necesito subir un archivo al servidor pero no al momento de hacer un submit. Necesito hacerlo en otro momento, pero sí obtengo la ruta del archivo a subir en una cadena. ¿Es posible con este código aún subirlo al servidor?

Myakire 25/09/2006 17:38

solo por curiosidad ......... si no es el submit ¿cuándo lo deseas hacer?

k3n 25/09/2006 17:58

Lo que sucede que no es el único dato que debo "submitear". La restricción es el tipo del form, que ya tiene una gran cantidad de datos y que no corresponden al tipo "enctype="multipart/form-data"". Además, ando usando el submit para cargar combos dinámicos en esa página, y es recién ahora que debo adjuntar al servidor un archivo. Puedo obtener la cadena de la ruta del archivo en la PC, y esperaba poder usarla como string para hacer la carga del archivo, pero como dije, el form me restringe a que sea sólo de tipo "file" la data enviada. Por eso necesito alguna manera de usar esa cadena para hacer la carga del archivo.

Myakire 25/09/2006 18:40

¿qué?

¿Dónde leiste que un formulario multipart/form-data no puede llevar otro tipo de datos?

Puedes mandar todos tus controles "normales" junto con tus controles tipo file dentro del mismo formulario

Ya el como los leas depende del método de upload que estes siguiendo, por ejemplo, si usas el freeasp lo haces con un Upload.Form("nombreDelControl")

Saludos

u_goldman 25/09/2006 18:55

Bueno, bueno, pero no se enoje....:borracho:

k3n 26/09/2006 08:03

Gracias MyAkire, pero aún no logro que me funcione correctamente. Lo que sucede es que ya tengo toda mi página hecha, y esto de cargar un archivo al servidor es reciente. He intentado usar el upload.form("nombre"), pero parece que no es exactamente igual que hacer un request("nombre"), porque toda la lógica de mi página me tira error. Me dice que las variables "Type mismatch", y cuando imprimo las variables con un clásico Response.Write, me salen nulas. ¿Cómo trabajo con las variables ahora que uso el upload.form?

k3n 26/09/2006 13:18

Lo encontré en este foro
 
Hey; esto es exactamente lo que me pasa a mí :D. Parece que no hay solución :(. A menos que mande un correo a zacktagnan :D.

http://www.forosdelweb.com/f15/freeaspupload-upload-form-379965/

Myakire 26/09/2006 14:00

Sería útil ver el código que tienes (indicando también la linea que tira error), por que eso debe de funcionar sin problemas, quizá hay un problema de colocación o nombres de objetos

sjam7 26/09/2006 17:02

Cita:

Iniciado por Boxmaster (Mensaje 1463758)
Asi es Myakire, y me costo mucho encontrarlo, por eso lo comparto en este foro, para aquellos que batallan para subir archivos al servidor.


Espero sea de ayuda este codigo amigos.

Cita:

Me costo un triunfo :corazon: conseguir aqui y alla, probar y probar codigo, pero aqui tienen una aportacion de mi parte, espero sea util para la causa personal.
Probaste algo ya probado? es una aportacion de tu parte? :-D quien te entiende... bueno

yo he probado el xeupload, que tiene de diferencia este?

k3n 27/09/2006 08:43

Pues primero, lo que he hecho es colocar el código aquel de la función SaveFiles:

' ************************************************** **
' Cambiar el valor de la siguiente variable
' para indicar el directorio de destino.
' El directorio indicado debe tener permisos de escritura
' de caso contrario el script fallará mostrando un error.
Dim uploadsDirVar
uploadsDirVar = "C:\Inetpub\wwwroot\"
' ************************************************** **

function SaveFiles
Dim Upload, fileName, fileSize, ks, i, fileKey, resumen
Set Upload = New FreeASPUpload
Upload.Save(uploadsDirVar)
' If something fails inside the script, but the exception is handled
If Err.Number <> 0 then Exit function
SaveFiles = ""
ks = Upload.UploadedFiles.keys
if (UBound(ks) <> -1) then
resumen = "<B>Archivos subidos:</B> "
for each fileKey in Upload.UploadedFiles.keys
resumen = resumen & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
next
else
resumen = "El nombre del archivo especificado en el formulario no es valido en el sistema."
end if
'comentar la siguiente linea si no se desea mostrar el resumen
' SaveFiles = resumen
end function

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
'Hace el upload de los archivos enviados y muestra el resumen
response.write SaveFiles()
end if

Pongo el "if" final para que apenas se haga el submit, suba los archivos al servidor. Pero ni bien entra a la página, tengo algunas variables que ya vienen de la página anterior, y cuando trato de usar el upload.form("nombre"), y al momento de usar la variable, me dice que "Type Mismatch".

Set Upload = New FreeASPUpload --> seteo del Upload, porque sino me dice que "Object Required"

doc = Upload.Form("doc")

...

if doc = 0 then --> aquí es la línea del error "Type Mismatch".


Además, para poder usar ese "Upload.Form", tengo que setear el Upload: Set Upload = New FreeASPUpload. Yo asumo que estoy usando mal los métodos del Upload. Además, las variables que vienen del form anterior, que no es multipart, también tienen que ser usadas en el que sí es multipart.

Boxmaster 27/09/2006 14:00

El codigo que puse en el primer mensaje, me funciono a la perfeccion en mi server, no tengo mi sitio alojado en un server gratuito, asi que no se si funciona en uno gratuito.

POr lo tanto lo comparti porque se que muchos compañeros programadores lo necesitan, este codigo se puede modificar, en el caso de los PDF a mi no me dio problemas, pero en fin, lo que les he mostrado lo hice con el fin de ayudar, asi que no puedo hacer mas por el momento. si encuentro otras opciones se las hare saber inmediatamente.

En cuanto a otros programas gratuitos, no los he usado asi que me disculpan, voy a hacer unas pruebas con el ASPUploader a ver como me va. Por lo pronto hasta luego muchachos y chicas, portense bien.

Bye

feram1986 07/02/2007 11:58

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
no me funciona tu codigo en mi servidor de prueba wwwroot, mando los archivos pero no aparecen en la carpeta upload, que puedo hacer??????????????????

Myakire 08/02/2007 07:50

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
¿marca error?

DanX03 28/01/2008 16:53

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
a mi tampoco me funciona el codigo, no me marca error y he mandado la impresion del valor que contienen mis variables y no lo hace

Julcar 29/01/2008 14:29

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Si este código no funciona, vean en esta web este sistema de upload

http://www.diproweb.somee.com/insert.htm

y me dicen qué opinan en el foro.

DanX03 31/01/2008 15:49

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Bueno ya probe el codigo de BoxMaster completo, me marca permiso denegado.

Shiryu_Libra 31/01/2008 18:14

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Cita:

Iniciado por DanX03 (Mensaje 2270447)
Bueno ya probe el codigo de BoxMaster completo, me marca permiso denegado.

solo pregunto :pensando: ya diste permisos de escritura sobre la carpeta donde guardaras los archivos????

luisvasquez 05/05/2008 13:50

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Cita:

Iniciado por Shiryu_Libra (Mensaje 2270586)
solo pregunto :pensando: ya diste permisos de escritura sobre la carpeta donde guardaras los archivos????

Amigos,

El problema es que no permite subir archivos mayores de 200kb, a menos que se modifique algo en en IIS. Obviamente los que tenemos hosting compartido estamos fritos...

Vean aca el error.

Yo estoy buscando la forma de aumentar ese limite de 200kb sin tener que tocar el IIS. Si alguien sabe como se agradece..

Saludos,
Luis

Myakire 05/05/2008 14:25

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Imagina que el administrador del servidor web por las razones que quieras solo permita subir archivos de 200kb y que los programadores pudieran brincarse esa limitante y subir lo que se les pegue en gana.

O sea, no, no se puede :-D

luisvasquez 05/05/2008 14:28

Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Cita:

Iniciado por Myakire (Mensaje 2391301)
Imagina que el administrador del servidor web por las razones que quieras solo permita subir archivos de 200kb y que los programadores pudieran brincarse esa limitante y subir lo que se les pegue en gana.

O sea, no, no se puede :-D

Bueno, tienes razón...

Sólo que pensé que era algo así como el timeout, que el IIS tiene un valor por defecto y uno puede aumentarlo. Claro, debe haber un límite para todo.

Gracias,
Luis

Esfinge02 05/03/2009 11:25

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
hola e aplicado el codigo que e visto pero aun me aparese un error que acontinuacion anexo

Cita:

Error de Microsoft VBScript en tiempo de ejecución error '800a0046'

Permiso denegado

/tutorias/upload.asp, línea 160
nose a que se refiaera ya que e apliocado los permisos correrespondientes, si alguien sabe por favor se los af¿gradeseria.

sin embargo despues de algunas investigaciones e llegado ala conclusion de que si lo corro en local esa sea una posibilidad de por que no funcione

David 05/03/2009 11:29

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Por favor, si tienes algún problema con algún código es mejor que lo hagas en un tema separado.

En fin, ¿qué tienes en la línea 160?

Esfinge02 05/03/2009 12:23

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
lo siento, pero ya lo solucione

aora lo que me falta es una forma de mostrar los archivos que e suvido

Uefor 19/04/2009 04:39

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Me ha vuelto loco esto :neurotico :

Set f = fso.OpenTextFile(server.mappath("..") & "\upload\upload"

Al ponerlo así te renombra el archivo upload+nombre del archivo... al estar usando otra carpeta con más archivos no los veía y parecía que no los subía hasta darme cuenta del error.

Lo ideal es solo con una barra más de como está en el código inicial y por cierto, a mi no me funciona con dos puntos yo tengo que quitarle uno entre los paréntesis:

Set f = fso.OpenTextFile(server.mappath(".") & "\upload\"

Sencillo y funcional, gracias por la colaboración
SaLu2

Esfinge02 20/04/2009 16:21

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
hola de nuevo, solo una duda ya funciona el código y todo la única gran duda es por que remplasa el nombre del archivo con nombre de "upload" eso es lo único......

Uefor 21/04/2009 07:53

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Por lo que acabo de comentar en el post anterior... sobra el último upload :ojotes:

gomitoz 26/08/2010 09:30

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Yo estoy utilizando este codigo pero solo sube hasta 200kb mas de eso truena :(( cual podra ser la limitante??

Myakire 26/08/2010 10:40

Respuesta: Codigo ASP para subir archivos al Servidor, ¡GRATIS!
 
Cita:

Iniciado por gomitoz (Mensaje 3533711)
Yo estoy utilizando este codigo pero solo sube hasta 200kb mas de eso truena :(( cual podra ser la limitante??

Cita:

Iniciado por pempas (Mensaje 1474403)
Para todos aquellos a los que les pase como a mi, que sepan que si tienen un servidor dedicado y el límite del buffer se colapsa, la respuesta está aquí:

http://www.fogcreek.com/FogBugz/KB/e...mitExceed.html

Saludos y gracias a todos

No revivas post viejos con información que no ayudan a la solución del mismo, máxime si no haz leído todos los mensajes del hilo


La zona horaria es GMT -6. Ahora son las 12:16.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.