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

Xelupload

Estas en el tema de Xelupload en el foro de ASP Clásico en Foros del Web. Hola a todos; Es muy bueno este recurso de Xelupload, el problema mio es que cuando subo archivos con el mismo nombre u otro nombre, ...
  #1 (permalink)  
Antiguo 01/08/2005, 08:47
Avatar de ajmataurus  
Fecha de Ingreso: enero-2005
Mensajes: 268
Antigüedad: 20 años, 4 meses
Puntos: 0
De acuerdo Xelupload

Hola a todos;
Es muy bueno este recurso de Xelupload, el problema mio es que cuando subo archivos con el mismo nombre u otro nombre, chanca a los archivos ya almacernados anteriormente por ejemplo tengo un jpeg llamado: imagen21.jpg y cuando alguna otra persona que no sabe que ya hay un archivo con ese nombre sube otro distinto pero con el mismo nombre imagen21.jpg "Lo chanca", còmo puedo hacer para que xelupload me pregunte "deseas sobreescribir el archivo, ya existe un archivo con ese nombre, etc." ahh
una más cómo puedo hacer para qeu solo me suba archivos de formatos jpg, bmp, gif??? y que seen de un determinado pixel 100x100????

graciasssssss.
Att.
Taurus
__________________
creando conciencia Nacionalista...!!!!! :si:
  #2 (permalink)  
Antiguo 01/08/2005, 09:13
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
si no me equivoco ninguna de las dos cosas se puede hacer... este escript simplemente copia y pega... pero yo solucione el problema de sobreescritura agregandole la id del producto al final ahora si no lo tienes en una base de datos puedes ponerle la fecha y la hora o algo asi de tal manera que sea muy dificil que se repita el nombre... ahora en cuanto a lo de redimencionar eso en ASP lo peudes lograr solo con componentes (entendiando redimensionar no solo cambiar el tamaño sino tambien el peso en kb de la imagen) pero en ASP.Net lo puedes hacer sin componentes busca en el foro por tubnails creo que asi se esceibe... eso saludos y suerte
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #3 (permalink)  
Antiguo 01/08/2005, 09:22
Avatar de ajmataurus  
Fecha de Ingreso: enero-2005
Mensajes: 268
Antigüedad: 20 años, 4 meses
Puntos: 0
y como puedo ponerle la fecha y hora????
__________________
creando conciencia Nacionalista...!!!!! :si:
  #4 (permalink)  
Antiguo 01/08/2005, 09:23
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
now()???? creo

si no me equivoco seria algo asi:

nombre = objFich.Nombre
strNombreFichero = now() & nombre
objFich.GuardarComo strNombreFichero, Server.MapPath("../imagenes")
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #5 (permalink)  
Antiguo 01/08/2005, 10:06
Avatar de ajmataurus  
Fecha de Ingreso: enero-2005
Mensajes: 268
Antigüedad: 20 años, 4 meses
Puntos: 0
hola
el archivo de guardar como no corre:
este es el archivo xelupload.asp
Cita:
<%

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")
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
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 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)))
if (iPosFin-iPosInicio) <= 0 then
'terminamos, no hay nada que leer
Exit Sub
end if
'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)
if oFichero.Tamano > 0 then 'lo añado a la colección Ficheros!
Ficheros.Add strControl, oFichero
end if
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
'------------------------------------------------------------------------
Private Function str2byte ( str )
Dim i, strbuf
for i = 1 to Len(str)
strbuf = strbuf & ChrB(AscB(Mid(str, i, 1)))
next
str2byte = strbuf
End Function
'------------------------------------------------------------------------
Private Function byte2str ( bin )
Dim i, bytebuf
for i = 1 to LenB(bin)
bytebuf = bytebuf & Chr(AscB(MidB(bin, i, 1)))
next
byte2str = bytebuf
End Function
'------------------------------------------------------------------------
End Class

'############################ Clase Fichero!!! ##########################

Class Fichero
'------------------------------------------------------------------------
Public Nombre
Public TipoContenido
Public Datos

'------------------------------------------------------------------------
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 '"
'añado la ultima barra a la ruta
ruta = ruta & "\" '"
end if
set oFSO = Server.CreateObject("Scripting.FileSystemObject")
if not oFSO.FolderExists(ruta) then Exit Sub
set oFich = oFSO.CreateTextFile(ruta & Nombre, true)
for i = 1 to LenB(Datos)
oFich.Write Chr(AscB(MidB(Datos, i, 1)))
next
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 '"
'añado la ultima barra a la ruta
ruta = ruta & "\" '"
end if
set oFSO = Server.CreateObject("Scripting.FileSystemObject")
if not oFSO.FolderExists(ruta) then Exit Sub
set oFich = oFSO.CreateTextFile(ruta & nombrefichero, true)
for i = 1 to LenB(Datos)
oFich.Write Chr(AscB(MidB(Datos, i, 1)))
next
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
'------------------------------------------------------------------------
%>
y las lineas de Guardar es:
fich.Guardar Server.MapPath("./imagenes")
y Guardar como es:
fich.GuardarComo nombrefichero, Server.MapPath("./imagenes")
solo corre el de Guardar pero el de guardar como no
que hago???????
__________________
creando conciencia Nacionalista...!!!!! :si:
  #6 (permalink)  
Antiguo 01/08/2005, 10:24
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
ahi no se ami tampoco me funciono el guardar como... pero con las modificaciones que te di deveria funcionar en guardar... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #7 (permalink)  
Antiguo 01/08/2005, 11:38
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años, 10 meses
Puntos: 0
habitualmente uso el GuardarComo , lo uso así

set objFich = objUpload.Ficheros("file")
'Primero, en nuestro directorio actual con el nombre que tiene
objFich.GuardarComo Session("NombreArchivo"), Server.MapPath("../../archivos/")
set objFich = nothing

Este es el código de la funcion en xelupLoad.asp

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

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

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

for i = 1 to LenB(Datos)
oFich.Write Chr(AscB(MidB(Datos, i, 1)))
next

oFich.Close
set oFSO = nothing


End Sub

No sé si hay algo diferente, pero a mi si me funciona.
Slds.
  #8 (permalink)  
Antiguo 01/08/2005, 14:11
Avatar de ajmataurus  
Fecha de Ingreso: enero-2005
Mensajes: 268
Antigüedad: 20 años, 4 meses
Puntos: 0
De acuerdo

Cita:
habitualmente uso el GuardarComo , lo uso así

set objFich = objUpload.Ficheros("file")
'Primero, en nuestro directorio actual con el nombre que tiene
objFich.GuardarComo Session("NombreArchivo"), Server.MapPath("../../archivos/")
set objFich = nothing
como pasa el valor session("nombreArchivo") ???
el codigo que incluye a xelupload.asp
es: uptest.asp y su codigo es el siguiente:
Cita:
<!--#include file="xelupload.asp"-->
<%
Dim up, fich
set up = new xelUpload
up.Upload()

Response.Write("Número de ficheros subidos: " & up.Ficheros.Count & "<br>")
Response.Flush
For each fich in up.Ficheros.Items
Response.Write("<ul>")
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("./imagenes")
' Con otro nombre:
' fich.GuardarComo nombrefichero, Server.MapPath("./imagenesl")
'----------------------------------------------------------------
Next

'Limpiamos objeto
set up = nothing
%>
cómo los inserto tu código aqui???
gracias
__________________
creando conciencia Nacionalista...!!!!! :si:
  #9 (permalink)  
Antiguo 01/08/2005, 15:29
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años, 10 meses
Puntos: 0
Lo único que veo diferente es que yo subo un sólo archivo

Lo uso así (yo quiero que se graben con el nombre 318_indice_calidad.xls por ejemplo):

Session("NombreArchivo") = Session("Cuestionario") & "_indice_calidad.xls"

set objUpload = new xelUpload
objUpload.Upload()
'si no ha subido ningún fichero, le avisamos
CantidadArchivos = objUpload.Ficheros.Count

if CantidadArchivos = 0 then
Response.write "<B>No hay archivos para subir </B> "
else
set objFich = objUpload.Ficheros("file")
'Primero, en nuestro directorio actual con el nombre que tiene
objFich.GuardarComo Session("NombreArchivo"), Server.MapPath("../../Estudios/Trabajo de campo/")
set objFich = nothing
Response.write "<B>El archivo " & Session("NombreArchivo") & " <BR> Se actualizó con éxito! </B> "
end if
set objUpload = nothing

Como verás, no tiene nada del otro mundo. No sé como se hace para adjuntar un archivo, asi te adjunto la version de x..load que uso yo.

En el ejemplo que pasás, lo unico que haria es

'Para guardarlo
' Con el nombre de fichero original:
'fich.Guardar Server.MapPath("./imagenes")
' Con otro nombre:
nombrefichero = now() & nombre
fich.GuardarComo nombrefichero, Server.MapPath("./imagenes/")


Slds
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:44.