Subir fichero local al servidor

25/07/2005 - 14:35 por David | Informe spam
Hola.
Necesito subir un fichero local al servidor para luego
usando Server.MapPath y el nombre del fichero poder
abrirlo y trabajar con el.

He visto algo que utiliza Server.CreateObject
("aspSmartUpload.SmartUpload"), pero a mi, la verdad, no
me funciona.

Gracias
Salu2

Preguntas similare

Leer las respuestas

#1 Matias Iacono
25/07/2005 - 17:45 | Informe spam
Lo que pasa que para usar lo que comentas necesitas tener el componente
instalado en tu maquina.

Para descargar el componente, si no mal recuerdo, la pagina es
www.aspmail.com

Ahora, si quieres hacer el upload pero sin uso de componentes, enviame un
correo para que te mande un attach con el codigo.

Saludos,



Matias Iacono
Microsoft MVP ASP/ASP.net - DC3
https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
"David" escribió en el mensaje
news:011601c59115$48c15e20$
Hola.
Necesito subir un fichero local al servidor para luego
usando Server.MapPath y el nombre del fichero poder
abrirlo y trabajar con el.

He visto algo que utiliza Server.CreateObject
("aspSmartUpload.SmartUpload"), pero a mi, la verdad, no
me funciona.

Gracias
Salu2
Respuesta Responder a este mensaje
#2 Carlos Rojas
25/07/2005 - 22:13 | Informe spam
Hola prueba con xelUpLoad.asp de http://www.aspfacil.com/

Saludos
Carlos Rojas


'archivo de prueba
<html>
<body>
<FORM action="GrabaFile.asp" method=POST name=form1
enctype="multipart/form-data">
<INPUT type="file" name="Archivo" >
<INPUT type="submit" value="Submit" id=submit1 name=submit1>
</form>
</body>
</html>


'
'archivo GrabaFile.asp
<%@ Language=VBScript %>
<!--#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("\CarpetaDestino")
'
' Con otro nombre:
fich.GuardarComo "OtroNombre.jpg", "c:\"
Next
%>

'-

'Fichero xelUpLoad.asp
<%
'#################################################
'
' Fichero: xelupload.asp
' Descripción: contiene las clases
' "xelUpload" y "Fichero"
' escritas en VBScript
'
' Autor: Carlos de la Orden Dijs
' Email:
' Fecha: Septiembre 2001
' Documentación: LEEME.TXT
'
' Ultima versión en
' http://www.aspfacil.com/
'
'-
' Ultima modificación 6/9/2001
'#################################################

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
Dim 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
'
%>





"David" escribió en el mensaje
news:011601c59115$48c15e20$
Hola.
Necesito subir un fichero local al servidor para luego
usando Server.MapPath y el nombre del fichero poder
abrirlo y trabajar con el.

He visto algo que utiliza Server.CreateObject
("aspSmartUpload.SmartUpload"), pero a mi, la verdad, no
me funciona.

Gracias
Salu2
Respuesta Responder a este mensaje
#3 JESE
30/07/2005 - 16:14 | Informe spam
Gracias por mi parte. Estoy trabajando eso... Ya os contaré.

José Enrique
http://jese.info

"Carlos Rojas" escribió en el mensaje
news:uW1D%

Hola prueba con xelUpLoad.asp de http://www.aspfacil.com/

Saludos
Carlos Rojas


'archivo de prueba
<html>
<body>
<FORM action="GrabaFile.asp" method=POST name=form1
enctype="multipart/form-data">
<INPUT type="file" name="Archivo" >
<INPUT type="submit" value="Submit" id=submit1 name=submit1>
</form>
</body>
</html>


'
'archivo GrabaFile.asp
<%@ Language=VBScript %>
<!--#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("\CarpetaDestino")
'
' Con otro nombre:
fich.GuardarComo "OtroNombre.jpg", "c:\"
Next
%>

'-

'Fichero xelUpLoad.asp
<%
'#################################################
'
' Fichero: xelupload.asp
' Descripción: contiene las clases
' "xelUpload" y "Fichero"
' escritas en VBScript
'
' Autor: Carlos de la Orden Dijs
' Email:
' Fecha: Septiembre 2001
' Documentación: LEEME.TXT
'
' Ultima versión en
' http://www.aspfacil.com/
'
'-
' Ultima modificación 6/9/2001
'#################################################

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
Dim 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
'
%>





"David" escribió en el mensaje
news:011601c59115$48c15e20$
Hola.
Necesito subir un fichero local al servidor para luego
usando Server.MapPath y el nombre del fichero poder
abrirlo y trabajar con el.

He visto algo que utiliza Server.CreateObject
("aspSmartUpload.SmartUpload"), pero a mi, la verdad, no
me funciona.

Gracias
Salu2





Respuesta Responder a este mensaje
#4 Carlos Rojas
30/07/2005 - 20:12 | Informe spam
Olvidé indicar que si el archivo que van a subir al servidor es muy grande
deben incrementar el tiempo de espera de archivos de comando en las
propiedades del sitio web dentro de IIS


"JESE" escribió en el mensaje
news:dcg1vp$svc$

Gracias por mi parte. Estoy trabajando eso... Ya os contaré.

José Enrique
http://jese.info

"Carlos Rojas" escribió en el mensaje
news:uW1D%
>
> Hola prueba con xelUpLoad.asp de http://www.aspfacil.com/
>
> Saludos
> Carlos Rojas
>
>
> 'archivo de prueba
> <html>
> <body>
> <FORM action="GrabaFile.asp" method=POST name=form1
> enctype="multipart/form-data">
> <INPUT type="file" name="Archivo" >
> <INPUT type="submit" value="Submit" id=submit1 name=submit1>
> </form>
> </body>
> </html>
>
>
> '
> 'archivo GrabaFile.asp
> <%@ Language=VBScript %>
> <!--#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("\CarpetaDestino")
> '
> ' Con otro nombre:
> fich.GuardarComo "OtroNombre.jpg", "c:\"
> Next
> %>
>
> '-
>
> 'Fichero xelUpLoad.asp
> <%
> '#################################################
> '
> ' Fichero: xelupload.asp
> ' Descripción: contiene las clases
> ' "xelUpload" y "Fichero"
> ' escritas en VBScript
> '
> ' Autor: Carlos de la Orden Dijs
> ' Email:
> ' Fecha: Septiembre 2001
> ' Documentación: LEEME.TXT
> '
> ' Ultima versión en
> ' http://www.aspfacil.com/
> '
> '-
> ' Ultima modificación 6/9/2001
> '#################################################
>
> 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
> Dim 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
>


'
> %>
>
>
>
>
>
> "David" escribió en el mensaje
> news:011601c59115$48c15e20$
>> Hola.
>> Necesito subir un fichero local al servidor para luego
>> usando Server.MapPath y el nombre del fichero poder
>> abrirlo y trabajar con el.
>>
>> He visto algo que utiliza Server.CreateObject
>> ("aspSmartUpload.SmartUpload"), pero a mi, la verdad, no
>> me funciona.
>>
>> Gracias
>> Salu2
>
>
>



Respuesta Responder a este mensaje
#5 JESE
30/07/2005 - 23:01 | Informe spam
Carlos:

¿Te refieres a Server.ScriptTimeout = <nº segundos> ?

Saludos.

José Enrique
http://jese.info

"Carlos Rojas" escribió en el mensaje
news:

Olvidé indicar que si el archivo que van a subir al servidor es muy grande
deben incrementar el tiempo de espera de archivos de comando en las
propiedades del sitio web dentro de IIS


"JESE" escribió en el mensaje
news:dcg1vp$svc$

Gracias por mi parte. Estoy trabajando eso... Ya os contaré.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida