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

Renombrar Archivo cuando se sube al servidor y no despues

Estas en el tema de Renombrar Archivo cuando se sube al servidor y no despues en el foro de ASP Clásico en Foros del Web. Hola esteve viendo por varias partes y en todas dan la opcion de al guardar el archivo, copiarlo , renombrarlo y despues eliminar el original. ...
  #1 (permalink)  
Antiguo 11/12/2008, 14:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 51
Antigüedad: 16 años, 6 meses
Puntos: 0
Renombrar Archivo cuando se sube al servidor y no despues

Hola esteve viendo por varias partes y en todas dan la opcion de al guardar el archivo, copiarlo , renombrarlo y despues eliminar el original.

Mi consulta es saber si se puede renombrar un archivo al vuelo cuando se sube antes q sea grabado en el servidor?

Última edición por calinzt; 11/12/2008 a las 14:08
  #2 (permalink)  
Antiguo 11/12/2008, 14:58
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

pues supongo que depende deel componente que usas
en la propiedad save puedes ver si lo cambias

que código usas para subir?
algún componente?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 11/12/2008, 15:01
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Más que cómo hacerlo, me pregunto por qué hacerlo ¿qué diferencia tiene?

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 15/12/2008, 06:09
 
Fecha de Ingreso: octubre-2008
Mensajes: 51
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Cita:
Iniciado por JuanRAPerez Ver Mensaje
pues supongo que depende del componente que usas
en la propiedad save puedes ver si lo cambias

que código usas para subir?
algún componente?
Gracias por responder, el fin de semana no tenia el codigo , pero volviendo al tema no uso componente y este es el codigo que lo subo y despues hago el metodo de copiar , renombrar y eliminar el antiguo.

Código asp:
Ver original
  1. 'Subir Archivo---------------------------------------------------------------
  2. <%Case 2
  3.     ForWriting = 2
  4.     adLongVarChar = 201
  5.     lngNumberUploaded = 0
  6.     noBytes = Request.TotalBytes
  7.     binData = Request.BinaryRead (noBytes)
  8. Set RST = CreateObject("ADODB.Recordset")
  9.     LenBinary = LenB(binData)
  10. if LenBinary > 0 then
  11.     RST.Fields.Append "myBinary", adLongVarChar, LenBinary
  12.     RST.Open
  13.     RST.AddNew
  14.     RST("myBinary").AppendChunk BinData
  15.     RST.Update
  16.     strDataWhole = RST("myBinary")
  17. End If
  18.     strBoundry = Request.ServerVariables ("HTTP_CONTENT_TYPE")
  19.     lngBoundryPos = instr(1,strBoundry,"boundary=") + 8
  20.     strBoundry = "--" & right(strBoundry,len(strBoundry)-lngBoundryPos)
  21.     lngCurrentBegin = instr(1,strDataWhole,strBoundry)
  22.     lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1
  23. do while lngCurrentEnd > 0
  24.     strData = mid(strDataWhole,lngCurrentBegin, lngCurrentEnd - lngCurrentBegin)
  25.     strDataWhole = replace(strDataWhole,strData,"")
  26.     lngBeginFileName = instr(1,strdata,"filename=") + 10
  27.     lngEndFileName = instr(lngBeginFileName,strData,chr(34))
  28.  
  29. if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 then
  30.    
  31. Response.Write "<FONT FACE=Verdana SIZE=5>Ha ocurrido un error</FONT><BR><BR>"
  32.     Response.Write "<FONT FACE=Verdana SIZE=2><B>Explicación:</B><BR>"
  33.     Response.Write "1) Deberías seleccionar al menos 1 archivo.<BR>"
  34.     Response.Write "2) Deberías seleccionar los archivos en orden, de uno en uno y de arriba a abajo.<BR><BR>"
  35.     Response.Write "<B>Solución:</B><BR>"
  36.     Response.Write "Retrocede pulsando el botón de <B>Retroceder</B> e inténtalo de nuevo.</FONT><BR><BR>"
  37.     Response.Write "<INPUT TYPE=Button onclick=history.go(-1) value='<< Retroceder' ID='button'1 NAME='button'1 Class=presenta2>"
  38.     Response.End
  39. end if
  40.  
  41. if lngBeginFileName <> lngEndFileName then
  42.     strFilename = mid(strData,lngBeginFileName,lngEndFileName - lngBeginFileName)
  43.     tmpLng = instr(1,strFilename,"\")
  44. Do While tmpLng > 0
  45.     PrevPos = tmpLng
  46.     tmpLng = instr(PrevPos + 1,strFilename,"\")
  47. Loop
  48.     FileName = right(strFilename,len(strFileName) - PrevPos)
  49.     lngCT = instr(1,strData,"Content-Type:")
  50. If lngCT > 0 then
  51.     lngBeginPos = instr(lngCT,strData,chr(13) & chr(10)) + 4
  52. Else
  53.     lngBeginPos = lngEndFileName
  54. End If
  55.     lngEndPos = len(strData)
  56.     lngDataLenth = lngEndPos - lngBeginPos
  57.     strFileData = mid(strData,lngBeginPos,lngDataLenth)
  58.     NombreNuevo = "prueba"
  59. Set fso = CreateObject("Scripting.FileSystemObject")
  60. Set f = fso.OpenTextFile(server.mappath(".") & "\imagen\" & FileName, ForWriting, True)
  61. f.Write strFileData
  62. set f = nothing
  63. set fso = nothing
  64.  
  65. lngNumberUploaded = lngNumberUploaded + 1
  66.  
  67. '/Renombra los archivos subidos------------------------------------------------/'
  68. Set fsx = CreateObject("Scripting.FileSystemObject")
  69. set Archivo = fsx.GetFile(Server.MapPath(".") & "\imagen\" & FileName)
  70. Extension = fsx.GetExtensionName(Archivo)
  71. Call Archivo.Copy(Server.MapPath(".") & "\imagen\" & NombreNuevo & lngNumberUploaded & "." & Extension)
  72. Eliminado = Server.MapPath(".") & "\imagen\" & FileName
  73.  
  74. if fsx.FileExists(Archivo) = True then
  75. call Archivo.Delete()    
  76. Response.Write("Eliminado el archivo"&" "&Eliminado)
  77. 'Response.Write(Archivo)
  78. end if
  79.  
  80. Set Archivo = Nothing
  81. set fsx = nothing
  82. '/------------------------------------------------------------------------------/'
  83.  
  84. End If
  85.     lngCurrentBegin = instr(1,strDataWhole,strBoundry)
  86.     lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1
  87. loop
  88.        
  89.     Response.Write "<FONT FACE=Verdana SIZE=5>Fichero(s) subido(s) al servidor</FONT><BR><BR>"
  90.     Response.Write "<FONT FACE=Verdana SIZE=2>" & lngNumberUploaded & " fichero(s) subidos al servidor.</FONT><BR><BR>"
  91.     Response.Write "<INPUT TYPE=Button onclick='document.location=" & chr(34) & "Subir_Ficheros.asp" & chr(34) & "' VALUE='<< Enviar más Loteo(s)' ID='button'1 NAME='button'1 Class=presenta2>"
  92.  
  93. End Select%>

Cita:
Iniciado por u_goldman Ver Mensaje
Más que cómo hacerlo, me pregunto por qué hacerlo ¿qué diferencia tiene?

Saludos
es un paso demas que se esta haciendo copiando y pegando el archivo, a su vez que en mi caso se esta dando un servicio publico se suben archivos a cada momento y de peso algunas veces grandes con cada solicitud alrededor de 3000 o mas, por eso quiero tambien hacerlo en el momento de la subida y no despues.
  #5 (permalink)  
Antiguo 16/12/2008, 12:09
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Supongo que el método que usa renombra archivos copiando el archivo original a otro y luego eliminando el original en lugar de un RENAME, por cierto ¿por qué no usas un ren o un MoveFile (FSO) directamente en lugar de dicho método?
  #6 (permalink)  
Antiguo 16/12/2008, 12:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 51
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Cita:
Iniciado por Myakire Ver Mensaje
Supongo que el método que usa renombra archivos copiando el archivo original a otro y luego eliminando el original en lugar de un RENAME, por cierto ¿por qué no usas un ren o un MoveFile (FSO) directamente en lugar de dicho método?

con lo de ren te refieres a ren de WScript.Shell ?
  #7 (permalink)  
Antiguo 16/12/2008, 12:54
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Así es, ren o rename, algo como esto:

Set WShell = CreateObject("WScript.Shell")
WShell.Run ("ren OldFile.txt NewFile.txt")

Claro que con cuidado de los permisos en el directorio y esas cosas que con el upload supongo ya los habrás concedido.

En lo personal, yo usaría el MoveFile de FSO por simpleza, pero cuestión de tus necesidades.

Saludos
  #8 (permalink)  
Antiguo 17/12/2008, 13:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 51
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Gracias al final ocupe moveFile aunque ya antes habia prograbado con el WScript.shell , e sun buen metodo usar el sistema de dos^^

gracias las dos formas son lo mas cercano a renombrar al vuelo
^^.
  #9 (permalink)  
Antiguo 18/12/2008, 18:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 22 años
Puntos: 0
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Cita:
Iniciado por calinzt Ver Mensaje
NombreNuevo = "prueba"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(server.mappath(".") & "\imagen\" & FileName, ForWriting, True)
f.Write strFileData
set f = nothing
set fso = nothing
Prueba a poner el nuevo nombre en este momento:

NombreNuevo = "prueba"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(server.mappath(".") & "\imagen\" & NombreNuevo, ForWriting, True)
  #10 (permalink)  
Antiguo 18/12/2008, 18:23
Avatar de Valery-Net  
Fecha de Ingreso: agosto-2008
Mensajes: 694
Antigüedad: 16 años, 8 meses
Puntos: 12
Respuesta: Renombrar Archivo cuando se sube al servidor y no despues

Yo uso el componente aspupload y si deseo el mismo lo renombra después que lo sube; usar ese componente es muy sencillo.
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 08:10.