Foros del Web » Programando para Internet » ASP Clásico »

Confusion para Upload simultaneo

Estas en el tema de Confusion para Upload simultaneo en el foro de ASP Clásico en Foros del Web. Buenos dias, apelo a ustedes con un problema que me esta volviendo un poco loco. estoy uplodeando 2 files de un formulario, lo que quiero ...
  #1 (permalink)  
Antiguo 07/03/2007, 08:59
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Confusion para Upload simultaneo

Buenos dias, apelo a ustedes con un problema que me esta volviendo un poco loco.

estoy uplodeando 2 files de un formulario, lo que quiero ahora es en el segundo file, limitar el tamaño del file a 20MB.
ademas si me dan alguna sugerencia en cuanto al codigo, como lo ven. las otras variables que ven las uso luego para guardar la info en una base.


Código:
<!--#include file="xelupload.asp"-->

<%
Dim up, fich, URL, Desc, flag, nombreOr(2), nombreNu(2), tamano(2), tipo(2), tamal, extencion, I, MAXTAM
MAXTAM = 20000
set up = new xelUpload
up.Upload()
id_user = up.form ("id_usuario")
URL = up.form("url")
comentario = up.form("comentario")
flag = 0%>

<%
For each fich in up.Ficheros.Items
' Guardo Nombre Original del Archivo
nombreOr(flag) = fich.Nombre
tamano(flag) = fich.Tamano
tipo(flag) = fich.TipoContenido
'Concateno los distintos datos con "-" para armar el nombre
nombrefichero1 = id_user & "-" & URL & "-" & fich.Nombre
'Remplazo las / si es que hay por "-"
nombrefichero1 = Replace(nombrefichero1, "/", "-")
'Guardo el nombre nuevo para guardarlo despues en la base
nombreNu(flag) = nombrefichero1
'Separo el nombre Original en el punto para sacar la estencion
nombrefichero3 = Split(fich.Nombre, ".")
'Saco la extencion sola
extencion = LCase(nombrefichero3(ubound(nombrefichero3)))

'Compruebo que el archivo anterior se haya subido bien, si no, no sigo
if tamal = "No" OR tamal = "" then
	'Compruebo la extencion, Tambien si queres podes comparar el tipo de archivo
	if (extencion = "rar" OR  extencion = "zip" OR extencion = "doc" OR extencion = "ace")  then
		'Guardo el archivo
		fich.GuardarComo nombreNu, Server.MapPath("file\")
		'preparo una variable para decir que todo fue bien
	   	tamal = "No"
	else
		'El archivo anterior cargo bien pero este no, Tonces borro el alterior
		if tamal = "No" OR tamal = "" then
        	Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
			if ScriptObject.FileExists("C:\Inetpub\wwwroot\tavo\file\" & nombreNu(0)) then
		   		ScriptObject.DeleteFile("C:\Inetpub\wwwroot\tavo\file\" & nombreNu(0))
			end if
		end if
		'El archivo no tiene la extencion requerida
		tamal = "Tipo de archivo incorrecto, Por Favor, Ingrese solo archivos<br><b>.rar</b>, <b>.zip</b>, <b>.ace</b>, <b>.doc</b>, <b>.txt</b>, <b>.htm</b>, <b>.html</b>"
	end if
else
	tamal = "Tipo de archivo incorrecto, Por Favor, Ingrese solo archivos<br><b>.rar</b>, <b>.zip</b>, <b>.ace</b>, <b>.doc</b>, <b>.txt</b>, <b>.htm</b>, <b>.html</b>"
end if
flag = flag + 1
' fich.GuardarComo nombrefichero2, Server.MapPath("file\")
'----------------------------------------------------------------
Next
'Limpiamos objeto
set up = nothing
%>
espero cualquier sugerencia.
en especial si me pueden ayudar por favor en el problema q tengo de controlar el tamaño del file 2

muchas gracias

Gustavo
  #2 (permalink)  
Antiguo 07/03/2007, 11:24
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Sonrisa Re: Confusion para Upload simultaneo

Puedes explicar mejor tu problema?
Por codigo no puedes limitar el tamaño.
  #3 (permalink)  
Antiguo 07/03/2007, 11:49
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Confusion para Upload simultaneo

Gracias por contestar, les comento mejor mi problema.
asi como esta, funciona, pero tengo un timeout que me deja cargar archivos grandes, el tema es que lo que quiero lograr es
con MAXTAM = 20000 comparar con el segundo file que entra, si es mayor a los bytes de MAXTAM, hacer un response "archivo demasiado grande, debe ser un file de 20MB maximo".
esa entrada seria en el nombreNu(1).
espero que me haya explicado mejor

muchas gracias
  #4 (permalink)  
Antiguo 07/03/2007, 12:52
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Confusion para Upload simultaneo

Po zi
Bien, yo tuve el mismo problema, te comento:
Parece ser que es necesario que subas el archivo, si no ocurre un error en el server, y despues decidir si vale o eliminarlo, tambien he visto que utilizas el componente 'xelupload.asp', asi que devo aprobechar para advertir a todos los usuarios que utilizan componentes de uploads escritos en asp:

NO SON APTOS PARA MÁS DE 64K

Pq? Aparte de otras cosas el asp no es apto para el manejo de bytes, con cadenas pequeñas vale pero para 120K mi amd 2400 tarda unos 4-6 segundos en 'decodificar' el archivo, esto es por que lo recibe en UNICODE y el asp trabaja en ASCII como el VB(Internamente en UNICODE, cosas del M$...).

Asi que si quieres subir archivos grandes al server yo pensaria en componentes activex para esta función.

Si sabes vb te lo puedes programar tu

Saludos
  #5 (permalink)  
Antiguo 08/03/2007, 13:55
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Upload funciona pero hay que mejoralo

Muchas gracias jonathan.m.a por las respuestas.
te comento que claro como vos decias, el tiempo de formateo depende del tamaño del file, si es un file de 15MB va a tardar bastante en procesar el ASP.

yo puse un limite de 20MB.
y ahora estoy haciendo la comparacion de los files, si es mayor imprime el mje de "archivo demasiado grande".

ahora bien, nose si se puede lograr en ASP puro que resuelva el tamaño del file antes de todo el formateo.

de no poderse hacer, lo piola seria mientras formatea el file mostrar un gif animado, ya que de la manera en la que esta ahora, la pagina da una sensacion de colgada "colgada", si logro mostrar un gif animado, el usuario sabria que esta procesando su upload.


Código:
<!--#include file="xelupload.asp"-->

<%
Dim up, fich, URL, Desc, flag, nombreOr(2), nombreNu(2), tamano(2), tipo(2), mal, extencion, I, MAXTAM
MAXTAM  = 20000
set up = new xelUpload
up.Upload()
id_user = up.form ("id_usuario")
URL = up.form("url")
comentario = up.form("comentario")
flag = 0%>

<%
For each fich in up.Ficheros.Items
' Guardo Nombre Original del Archivo
nombreOr(flag) = fich.Nombre
tamano(flag) = fich.Tamano
tipo(flag) = fich.TipoContenido
'Concateno los distintos datos con "_._" para armar el nombre
nombrefichero1 = id_user & "-" & URL & "-" & fich.Nombre
'Remplazo las / si es que hay por "-_-"
nombrefichero1 = Replace(nombrefichero1, "/", "-")
'Guardo el nombre nuevo para guardarlo despues en la base
nombreNu(flag) = nombrefichero1
'Separo el nombre Original en el punto para sacar la estencion
nombrefichero3 = Split(fich.Nombre, ".")
'Saco la extencion sola
extencion = LCase(nombrefichero3(ubound(nombrefichero3)))
'Compruebo que el archivo anterior se aya subido bien, si no, no sigo


if mal = "No" OR mal = "" then
			
			'Compruebo el tamaño del file, si esta ok carga el file sino da mensaje de error
			if tamano(0) < MAXTAM or tamano(1) < MAXTAM then
				'Guardo el archivo
				fich.GuardarComo nombreNu, Server.MapPath("file\")
				'preparo una variable para decir que todo fue bien
				mal = "No"
			else
						'El archivo anterior cargo bien pero este no, Tonces borro el alterior
						if mal = "No" OR mal = "" then
							Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
									
									if ScriptObject.FileExists("C:\Inetpub\wwwroot\expressionawardslatam2007\file\" & nombreNu(0)) then
									   ScriptObject.DeleteFile("C:\Inetpub\wwwroot\expressionawardslatam2007\file\" & nombreNu(0))
									end if
									
						end if
				'El archivo no tiene la extencion requerida
				mal = "Archivo demasiado grande, <p> solo puede cargar archivos hasta 20MB"
				response.write mal
			end if
end if
flag = flag + 1
' fich.GuardarComo nombrefichero2, Server.MapPath("file\")
'----------------------------------------------------------------

Next
'Limpiamos objeto
set up = nothing
%>
por favor, espero cualquier recomendacion y ayuda al respecto.

muchas gracias

Gustavo
  #6 (permalink)  
Antiguo 09/03/2007, 07:29
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Sonrisa Re: Confusion para Upload simultaneo

Bien, lo que no me acuerdo ahora es si se puede comenzar a enviar la respuesta
al cliente antes de recoger el file y procesarlo, creo que no.

Pensé en varias soluciones antes de darme cuenta que el problema real era la decodificación del archivo en asp que es muy lenta, en js pasa lo mismo.

La verdad, soluciones se me ocurren varias, pero la más eficáz para el usuario y el servidor seria implementar un componente activex en el server.

Y para mostar al usuario algo lo haria utilizando frames, te explico:

Tu tienes una pagina donde los user suben los archivos no?
Bien, pues separas el contenido de tu pagina para subir files en 2 archivos:
Por ejemplo:

1º subir_archivos.asp
2º form_envio.asp

subir_archivos contendria el aspecto de la web y el boton de envio,
y form_envio el formulario y los imputs.

Al pulsar el boton activas un js que envie el iframe.form y acto segido encoges el iframe para k no se vea, entonces aqui tienes varias posibilidades,
como que tubieras una imagen encima del form oculta y la activas cuando encoges el iframe. Esta seria el gif
Despues cuando el file ha sido guardado envias una pagina k contenga otro js
y este iteractuar para hacer lo que quieras

No se si me he explicado bien

Si te interesa lo del componente activex para no sobrecargar el server dilo, aparte tienes que pensar en el timeout del server!!!

Saludos
  #7 (permalink)  
Antiguo 09/03/2007, 08:07
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Confusion para Upload simultaneo

jonathan.m.a, muchas gracias nuevamente por la respuesta.
con respecto al timeout ya lo tengo en 800, asi q no hay drama, los uploads grandes q he probado funcionan perfecto.

ahora bien, con respecto a ActiveX realmente no conozco nada de nada.

asi q bueno, pense que como lo tenia armado podria mostar un gif adelante mientrasse resuelve todo.

el upload, comprende de dos files
form.asp,
y confim.asp (que es un popup que resuelve la carga de los files, que es el codigo que estoy consultando con ustedes).

si me podes orientar con ActiveX te agradeceria, tampoco quiero hacer perder tu tiempo.
cualquier orientacion al respecto me ayudaria, muchas gracias

Gustavo
  #8 (permalink)  
Antiguo 09/03/2007, 09:16
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Sonrisa Re: Confusion para Upload simultaneo

El tema el largo, ahora bien, no tienes porque aprenderte todo el repertorio COM
Antes de utilizar una dll activeX haz la siguiente prueba:

El el archivo que recibe el file pon el siguiente codigo:

Código:
Dim inicio_carga: inicio_carga = Timer 'Contar el tiempo de carga de la web.
Y justo despues de todo el proceso y antes que la etiqueta /html esto

Código:
%>Pagina generada en <%=FormatNumber(Timer - inicio_carga, 4, True)%> segundos.<%
Esto es para ver lo que tarde el server en decodificar el archivo, pruebalo con uno pequeño y el maximo que permites.

Si es muy largo postealo que te lo mostrare.

Saludos.
  #9 (permalink)  
Antiguo 09/03/2007, 14:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Confusion para Upload simultaneo

no, es terrible lo que tarda en formatear, 3MB como 10 min, una bestialidad, tengo que utilizar otra cosa, nose, ahora como que quede medio perdido.
la semana pasada subi 20MB en 12 min, ahora para 3 MB me tardo como 10 min.
nose que pudo ser ya q no toque nada de este asp.

seguramente tiene q ver el tipo de la maquina del cliente.

debere buscar otra opcion, porque si va a variar tanto entre cliente y cliente es una barbaridad.

me decias con ActiveX puedo resolverlo mejor.
te agraceceria a vos y a quien quiera ayudarme.

Muchas gracias de antemano.
Saludos!
  #10 (permalink)  
Antiguo 09/03/2007, 17:57
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
De acuerdo Re: Confusion para Upload simultaneo

Eso queria decir
El lunes lo resolveremos

Saludos.
  #11 (permalink)  
Antiguo 12/03/2007, 06:54
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Confusion para Upload simultaneo

Ok gracias por la ayuda ! !

Gracias de Antemano !

Gustavo
  #12 (permalink)  
Antiguo 12/03/2007, 10:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Confusion para Upload simultaneo

Hola de nuevo, lo ideal seria programar un componente tipo smartupload, pero ya que el tiempo no apremia he buscado la clase xelupload y la he adaptado para utilizar un pequeño componente dll activex, este le proporciona unicamente las funciones para poder decodificar más rapido, como no puedo adjuntar archivos lo voy pegando y solo sigue los pasos:

Los 2 siguientes archivos pertenecen a la clase xelupload programada por:
Código HTML:
ht tp://ww w.aspfacil.com
Archivos originales:
Código HTML:
ht tp://ww w.aspfacil.c om/codigo/xelupload.zip
Una Rfc al respecto:
Código:
ht tp://ww w.ietf.o rg/rfc/rfc2388.txt
Datos extraidos de:
Código HTML:
ht tp://ww w.aspfacil.c om
Las modificaciones siguientes han sido realizadas por Jonathan M.A.



Archivo: 'xleupload.asp'

Código:
<%
'#################################################
'																									
'	Fichero:			xelupload.asp
'	Descripción:		contiene las clases 
'						"xelUpload" y "Fichero"
'						escritas en VBScript
'
'	Autor:				Carlos de la Orden Dijs
'	Email:				[email protected]
'	Fecha:				Septiembre 2001
'	Documentación:		LEEME.TXT
'
'				Ultima versión en 
'	 		ht-tp://ww-w.aspfacil.c-om/
'	
'-------------------------------------------------
'			Ultima modificación	6/9/2001 
'#################################################

'#################################################
' Clase:       xelUpload.asp
' Revisión:    1.0.2007.03.12
' Autor:       Jonathan M.A
' Descripción: 
'Modificación de las funciones str2byte, byte2str
'Guardar y GuardarComo
Private oAspFunc
'#################################################


Class xelUpload
' Maneja los formularios enviados como 'multipart/form-data' (ficheros)

Public Ficheros
Private eltosForm

'------------------------------------------------------------------------
Private Sub Class_Initialize()
	set Ficheros = Server.CreateObject("Scripting.Dictionary")
	set eltosForm = Server.CreateObject("Scripting.Dictionary")
	
	'Cargar el objecto axAspUtils.clsAspFunctions
	On Error Resume Next 
	Set oAspFunc = Server.CreateObject("axAspUtils.clsAspFunctions")
End Sub
'------------------------------------------------------------------------
Private Sub Class_Terminate()
	if IsObject(Ficheros) then
		Ficheros.RemoveAll
		set Ficheros = nothing
	end if
	if IsObject(eltosForm) then
		eltosForm.RemoveAll
		set eltosForm = nothing
	end if
	
	'Eliminar el objeto axAspUtils.clsAspFunctions
	If IsObject(oAspFunc) Then Set oAspFunc = Nothing
End Sub
'------------------------------------------------------------------------
'Permite hacer, por ejemplo: Response.Write(upload.Form("nombre"))
Public Property Get Form(campo)
	if eltosForm.Exists(campo) then
		Form = eltosForm.Item(campo)
	else
		Form = ""
	end if
End Property
'------------------------------------------------------------------------

Public Function IsLoadAspFunc()
	IsLoadAspFunc = IsObject(oAspFunc)
End Function 

Public Sub Upload()
	'Inicia el proceso. Debe llamarse ANTES DE HACER CUALQUIER OTRA COSA

	Dim byteDatos, strControl
	Dim iPosInicio, iPosFin, iPos, byteLimite, posLimite
	Dim iPosFich, iPosLim

	byteDatos = Request.BinaryRead(Request.TotalBytes)
	iPosInicio = 1
	iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(13)))
	'terminamos, no hay nada que leer
	if (iPosFin-iPosInicio) <= 0 then  Exit Sub 

	'extraemos el limite de principio y fin de los datos (p.e. -----2323g237623)
	byteLimite = MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)
	posLimite = InStrB(1, byteDatos, byteLimite)

	'terminamos cuando la posición del próximo límite sea igual 
	'a la del límite final, que lleva "--" detrás.
	do until posLimite = InStrB(byteDatos, byteLimite & str2byte("--"))

		iPos = InStrB(posLimite, byteDatos, str2byte("Content-Disposition"))
		iPos = InStrB(iPos, byteDatos, str2byte("name=")) 'nombre del control en <FORM>
		iPosInicio = iPos + 6 'me salto 6 caracteres -> name=" 
		iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(34))) 'busco las comillas de cierre
		'y tengo el nombre del control!
		strControl = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
		'busco ahora los datos en sí del control
		iPosFich =InStrB(posLimite, byteDatos, str2byte("filename="))
		posLimite = InStrB(iPosFin, byteDatos, byteLimite)
	
		'¿fichero o campo del formulario?
		if iPosFich <> 0 and iPosFich < PosLimite then
			'es un fichero, creo un nuevo objeto fichero y lo añado a Ficheros
			Dim oFichero, strNombre, strForm
			set oFichero = new Fichero
		
			iPosInicio = iPosFich + 10 'me salto 10 caracteres -> filename="
			iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(34)))
			strNombre = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
			'quito la ruta inicial
			oFichero.Nombre = Right(strNombre, Len(strNombre)-InStrRev(strNombre, "\")) '"
			
			iPos = InStrB(iPosFin, byteDatos, str2byte("Content-Type:"))
			iPosInicio = iPos + 14 'me salto Content-Type y un espacio!!
			iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(13))) 'busco el retorno de carro
			oFichero.TipoContenido = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
		
			iPosInicio = iPosFin + 4	'me salto los 3 retornos de carro que lleva!!!
			iPosFin = InStrB(iPosInicio, byteDatos, byteLimite)-2 'dos caracteres atrás
			oFichero.Datos = MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)
			
			'lo añado a la colección Ficheros!
			if oFichero.Tamano > 0 then Ficheros.Add strControl, oFichero
		else
			'es un campo del formulario
			iPos = InStrB(iPos, byteDatos, str2byte(chr(13)))
			iPosInicio = iPos + 4
			iPosFin = InStrB(iPosInicio, byteDatos, byteLimite)-2
			'extraigo el valor del control del formulario!
			strForm = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
			if not eltosForm.Exists(strControl) then
				eltosForm.Add strControl, strForm
			else
				eltosForm.Item(strControl) =  eltosForm.Item(strControl)+","&strForm
			end if
		end if
		'saltamos al siguiente límite
		iPosLimite = InStrB(iPosLimite+LenB(byteLimite), byteDatos, byteLimite)
	loop

End Sub
End Class



'############################ Clase Fichero!!! ##########################
Class Fichero
	'------------------------------------------------------------------------
	Public Nombre
	Public TipoContenido
	Public Datos
	
	Private Sub Class_Initialize()
		Datos = CStr("") ' Forzar conversión
	End Sub
	'------------------------------------------------------------------------
	Public Property Get Tamano()
		Tamano = LenB(Datos)
	End Property
	'------------------------------------------------------------------------

	Public Sub Guardar(ruta)
		Dim oFSO, oFich, i

		if ruta = "" or Nombre = "" then Exit Sub
		if Mid(ruta, Len(ruta)) <> "\" then	ruta = ruta & "\" 'añado la ultima barra a la ruta

		set oFSO = Server.CreateObject("Scripting.FileSystemObject")
		if not oFSO.FolderExists(ruta) then Exit Sub
		set oFich = oFSO.CreateTextFile(ruta & Nombre, true)

		' # oAspFunc
		If IsObject(oAspFunc) Then
			oFich.Write oAspFunc.UnicodeToAscii(CStr(Datos))
		Else	
			for i = 1 to LenB(Datos)
				oFich.Write Chr(AscB(MidB(Datos, i, 1)))
			next 	
		End If

		oFich.Close
		set oFSO = nothing
	End Sub
	'------------------------------------------------------------------------


	Public Sub GuardarComo(nombrefichero, ruta)
		Dim oFSO, oFich, i

		if ruta = "" or nombrefichero = "" then Exit Sub
		if Mid(ruta, Len(ruta)) <> "\" then	ruta = ruta & "\"

		set oFSO = Server.CreateObject("Scripting.FileSystemObject")
		if not oFSO.FolderExists(ruta) then Exit Sub
		set oFich = oFSO.CreateTextFile(ruta & nombrefichero, true)

		' # oAspFunc
		If IsObject(oAspFunc) Then
			oFich.Write oAspFunc.UnicodeToAscii(CStr(Datos))
		Else	
			for i = 1 to LenB(Datos)
				oFich.Write Chr(AscB(MidB(Datos, i, 1)))
			next 	
		End If

		oFich.Close: set oFSO = nothing
	End Sub
	
	
	'------------------------------------------------------------------------
	Public Sub GuardarBD (byRef field)
		if LenB(Datos) = 0 then Exit Sub
		field.AppendChunk Datos
	End Sub
	'------------------------------------------------------------------------
End Class 


	'------------------------------------------------------------------------
	' Utiliza el objeto oAspFunc.SringConv para codificar la cadena.
	Private Function str2byte(ByRef sData) 'ASCII - UNICODE
		If IsObject(oAspFunc) Then
			str2byte = Cstr("")
			str2byte = oAspFunc.AsciiToUnicode(CStr(sData))
		Else	
			Dim i, strbuf
			for i = 1 to Len(sData)
				strbuf = strbuf & ChrB(AscB(Mid(sData, i, 1)))
			next
			str2byte = strbuf
		End If
	End Function
	'------------------------------------------------------------------------
	Private Function byte2str(ByRef bin) 'UNICODE - ASCII
		If IsObject(oAspFunc) Then
			byte2str = CStr("")
			byte2str = oAspFunc.UnicodeToAscii(CStr(bin))
		Else	
			Dim i, bytebuf
			for i = 1 to LenB(bin)
				bytebuf = bytebuf & Chr(AscB(MidB(bin, i, 1)))
			next
			byte2str = bytebuf
		End If
	End Function
	'------------------------------------------------------------------------
	
	%>
Sigue -->
  #13 (permalink)  
Antiguo 12/03/2007, 10:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Confusion para Upload simultaneo

Archivo: 'uptest.asp'

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252" LCID="1034"%><% 'uptest.asp
Dim inicio_carga: inicio_carga = Timer 'Contar el tiempo de carga de la web.
%><!--#include file="xelupload.asp"--><%

'Dependiendo el tamaño se puede aumentar
Server.ScriptTimeout = 6000

Dim up, fich
Set up = new xelUpload
up.Upload()


Response.Write("<html><head></head><body>")
Response.Write("Número de ficheros subidos: " & up.Ficheros.Count & "<br>")
Response.Flush	
For each fich in up.Ficheros.Items
Response.Write("<ul>")
If up.IsLoadAspFunc() Then Response.Write("<li>Clase AspFunctions v1.0 cargada.</li>" + "<br>" + "<br>")
Response.Write("<li>Nombre: <b>" & fich.Nombre & "</b></li>")
Response.Write("<li>Tamaño: <b>" & fich.Tamano & "</b> bytes (" & FormatNumber(fich.Tamano / (1024*1024)) & " Mb)</li>")
Response.Write("<li>Tipo MIME: <b>" & fich.TipoContenido & "</b></li>")
Response.Write("</ul>")

'Para guardarlo
'	Con el nombre de fichero original:
	'fich.Guardar Server.MapPath("rutavirtual")
'	Con otro nombre:
	fich.GuardarComo fich.Nombre, "C:\"
'----------------------------------------------------------------
Next

'Limpiamos objeto
set up = nothing %>
Powered by <b>xelUpload</b> ;-)<br>
<b>AspFunctions</b> By Jonathan M.A<br>
Pagina generada en <%=FormatNumber(Timer - inicio_carga, 4, True)%> segundos.
</body>
</html>

Ahora van los archivos relacionados con la dll.
Necesitaras el vb6.


Nombre del proyecto: axAspUtils
Nombre de la clase: clsAspFunctions

Opciones de compilación:
Ejecución desantendida (No muestra los errores)
Subprocesos independientes

Clase: 'clsAspFunctions.cls'
Propiedades: Instancing = 5; Persistable = 0

Código:
' Módulo: clsAspFunctions.asp v1.0.2007.03.12
Option Explicit

Public Function AsciiToUnicode(ByRef sCadena As String) As String
    AsciiToUnicode = StrConv(sCadena, vbFromUnicode)
End Function

Public Function UnicodeToAscii(ByRef sCadena As String) As String
    UnicodeToAscii = StrConv(sCadena, vbUnicode)
End Function

Puedes registrar la dll cuando la compilas con el vb, pero para hacerlo manual:

Install.bat
Código:
@regsvr32 axasputils.dll
uninstall.bat
Código:
@regsvr32 axasputils.dll /u
Y un script para probar que la dll esta correctamente instalada:
Archivo: 'test_axasputils.vbs'

Código:
Dim oAspFunc, sData
On Error Resume Next
Set oAspFunc = CreateObject("axasputils.clsAspFunctions")
If Err.Number <> 0 Then
	Msgbox "Error, es posible que la libreria no este correctamente instalada." + vbcrlf + "Codigo error: " + CStr(Err.Number) + vbcrlf + "Descripción: " + Err.Description, vbInformation, "Test axAspUtils.clsAspFunctions.AsciiToUnicode"
Else
	sData = oAspFunc.AsciiToUnicode("Hola")
	sData = oAspFunc.UnicodeToAscii(CStr(sData))
	MsgBox sData, vbinformation, "Test axAspUtils.clsAspFunctions.AsciiToUnicode"
	Set oAspFunc = Nothing
End If
Bien, con esto ya lo tienes todo, ahora haz las pruebas de velocidad y veras la diferencia.

Aunque ahora sea más rapido continua siendo inadecuado para archivos grandes (16 Mb), solo ha ganado velocidad, nada más.

La clase xelupload ha sido preparada para operar sin el componente axAspUpload, esto es que si se dañara, borrara, etc continuaria utilizando las funciones originales, volviendo a comportarse como la 1.0

Cualquier duda ya sabes,
  #14 (permalink)  
Antiguo 12/03/2007, 13:39
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Confusion para Upload simultaneo

jonathan.m.a, te agradezco muchisimo po el tiempo que me has dedicado.

hoy lo pruebo desde casa y mañana te paso el informe, nuevamente muchas gracias


Gustavo
  #15 (permalink)  
Antiguo 04/04/2007, 09:34
 
Fecha de Ingreso: febrero-2006
Mensajes: 57
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Confusion para Upload simultaneo

Buenos dias jonathan.m.a
Antes que nada te queria pedir disculpas por no haber contestado mas rapido como habia salido todo. Andube con algunas cosas que me impidieron hacerlo antes.

En segundo paso, agradecerte enormemente la ayuda que me has brindado. Te comento que luego de varias pruebas he podido hacer funcionar a la perfecccion la aplicacion que has modificado. Solo tube hacer una modificacion en un XML del System32 en el nuevo Server porque me tiraba un error en esta linea

Código:
byteDatos = Request.BinaryRead(Request.TotalBytes)
pero por lo demas andubo a la perfeccion. nuevamente te agradezco mucho la ayuda.

Atte Gustavo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:53.