![]() |
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> </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. |
Cita:
|
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. |
sin componentes y/o clases? Y Funciona :arriba: |
:golpeado: Gracias por compartir el link :borracho: |
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" &_ |
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! |
si es un servidor gratuito puede ser |
No es un servidor gratuito, es un servidor dedicado... no entiendo porque pasa esto, será por permisos?? |
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 |
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.... |
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: |
Buenas capo. Parece que funciona pero me tira acceso denegado. Alguno tiene idea por que? Saludos:-) |
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? |
¿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? |
solo por curiosidad ......... si no es el submit ¿cuándo lo deseas hacer? |
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. |
¿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 |
Bueno, bueno, pero no se enoje....:borracho: |
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? |
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/ |
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 |
Cita:
Cita:
yo he probado el xeupload, que tiene de diferencia este? |
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. |
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 |
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?????????????????? |
Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS! ¿marca error? |
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 |
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. |
Re: Codigo ASP para subir archivos al Servidor, ¡GRATIS! Bueno ya probe el codigo de BoxMaster completo, me marca permiso denegado. |
La zona horaria es GMT -6. Ahora son las 23:49. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.