Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/08/2003, 00:49
Avatar de Mickel
Mickel
 
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 24 años, 5 meses
Puntos: 7
Información Tip: Como obtener los datos de un input file...

Código PHP:
<%
Response.Buffer = true
Response
.Clear
'sPath es la ruta fisica para subir el archivo
sPath=""
%>
<!-- #INCLUDE file="upload_functions.inc" -->
<%
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
Set MyFileObject = Server.CreateObject("Scripting.FileSystemObject")
BuildUpload(RequestBin)
'
ejemplo de como obtener los datos de otro campo del formulario
if UploadRequest.Exists("txtnombre") then sNombre=UploadRequest.Item("txtnombre").Item("Value")
'asumiendo que el campo file se llama "filimagen"
sImagen=UploadRequest.Item("filimagen").Item("FileName")
if len(sImagen)>0 then
    sFileName=Right(sImagen,Len(sImagen)-InstrRev(sImagen,"\"))
    sValue=UploadRequest.Item("filimagen").Item("Value")
    sFName=sFileName
    sFileName=sPath & "\" & sFileName
    '
determinamos el tamaño del archivo
    lSize
=LenB(sValue)
    
usamos CreateTextFile para estar seguros de que cree el archivo
    Set objFile 
= MyFileObject.CreateTextFile(sFileName)
    For 
i = 1 to lSize
       objFile
.Write chr(AscB(MidB(sValue,i,1)))
    
Next
    objFile
.Close
    Set objFile 
= Nothing
End 
if
Set UploadRequest = Nothing
Set MyFileObject 
= Nothing
%> 
el archivo upload_functions.inc contiene:
Código PHP:
<%
Function 
BuildUpload(RequestBin)
     
PosBeg = 1
     PosEnd 
= InstrB(PosBeg,RequestBin,getByteString(chr(13)))
     
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
     
boundaryPos = InstrB(1,RequestBin,boundary)
     Do 
until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
          
Dim UploadControl
          Set UploadControl 
= CreateObject("Scripting.Dictionary")
          
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
          
Pos = InstrB(Pos,RequestBin,getByteString("name="))
          
PosBeg = Pos+6
          PosEnd 
= InstrB(PosBeg,RequestBin,getByteString(chr(34)))
          
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
          
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
          
PosBound = InstrB(PosEnd,RequestBin,boundary)
          If 
PosFile<>0 AND (PosFile<PosBound) Then
               PosBeg 
= PosFile + 10
               PosEnd 
= InstrB(PosBeg,RequestBin,getByteString(chr(34)))
               
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
               
UploadControl.Add "FileName", FileName
               Pos 
= InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
               
PosBeg = Pos+14
               PosEnd 
= InstrB(PosBeg,RequestBin,getByteString(chr(13)))
               
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
               
UploadControl.Add "ContentType",ContentType
               PosBeg 
= PosEnd+4
               PosEnd 
= InstrB(PosBeg,RequestBin,boundary)-2
               Value 
= MidB(RequestBin,PosBeg,PosEnd-PosBeg)
          Else
               
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
               
PosBeg = Pos+4
               PosEnd 
= InstrB(PosBeg,RequestBin,boundary)-2
               Value 
= getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
          
End If
          
UploadControl.Add "Value", Value     
          UploadRequest
.Add name, UploadControl
          BoundaryPos
=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
     
Loop
End 
Function

Function 
GetByteString(StringStr)
     For 
i = 1 to Len(StringStr)
          
char = Mid(StringStr,i,1)
          
getByteString = getByteString & chrB(AscB(char))
     
Next
End 
Function

Function 
GetString(StringBin)
     
getString =""
     
For intCount = 1 to LenB(StringBin)
          
getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
     
Next
End 
Function
%>