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