Upload de imagenes al servidor

Cristina
11 de Julio del 2002
Estoy haciendo un foro y necesito dar la opcion de que el usuario envie imagenes al servidor. Por favor, decirme como hacerlo, ya que quiero que desde la misma pagina asp puedas enviar la imagen y una descripcion de la misma. Tambin quiero saber como hacer el enlace para mostrar la imagen. Muchisimas gracias

rubel perez
11 de Julio del 2002
copiate esta instruccion y modificala como quieras

%>
<html>
<body>

<%
'toma el valor de los parametros opt (option)
opt = request("opt")
if len(opt) = 0 then opt = 1
'diferentes opciones 1(seleccionar) 2(subir)
select case opt
'seleccion de archivos a subir
case 1
%>
Selecciona un fichero de tu Pc o tu Red para subir al servidor web
<form enctype="multipart/form-data" action="up.asp?opt=2" method="post" id="form1" name="form1">
<b>Instrucciones:</b><br>
1) Selecciona los ficheros que desees subir al web<br>
2) Pulsa el botn <b>Subir Fichero(s)</b><br><br>
<font color="red">ATENCION! dependiendo del tamao de los archivos a subir, la transferencia puede tardar varios minutos.</font><br><br><br>
<input name="file1" size=30 type="file"><br>
<input name="file2" size=30 type="file"><br>
<input name="file2" size=30 type="file"><br><br>
<input type="submit" value="Subir Fichero(s)"><br><br>
<%
'subir archivos al servidor
case 2
'constantes
ForWriting = 2
adLongVarChar = 201
lngNumberUploaded = 0
'variables
noBytes = Request.TotalBytes
binData = Request.BinaryRead (noBytes)
LenBinary = LenB(binData)
'instancia ADO para guardar archivo
Set obj_rec = CreateObject("ADODB.Recordset")
if LenBinary > 0 then
obj_rec.Fields.Append "myBinary", adLongVarChar, LenBinary
obj_rec.Open
obj_rec.AddNew
obj_rec("myBinary").AppendChunk BinData
obj_rec.Update
strDataWhole = obj_rec("myBinary")
end if
strBoundry = Request.ServerVariables ("HTTP_CONTENT_TYPE")
lngBoundryPos = instr(1,strBoundry,"boundary=") + 8
strBoundry = "--" & right(strBoundry,len(strBoundry)-lngBoundryPos)
lngCurrentBegin = instr(1,strDataWhole,strBoundry)
lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1
'bucle que recorre los archuivos a subir
do while lngCurrentEnd > 0
strData = mid(strDataWhole,lngCurrentBegin, lngCurrentEnd - lngCurrentBegin)
strDataWhole = replace(strDataWhole,strData,"")
lngBeginFileName = instr(1,strdata,"filename=") + 10
lngEndFileName = instr(lngBeginFileName,strData,chr(34))
'si no se seleccionan archivos
if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 then
response.write "Ha ocurrido un error<br><br>"
response.write "<b>Explicacin:</b><br>"
response.write "1) Deberas seleccionar al menos 1 archivo.<br>"
response.write "2) Deberas seleccionar los archivos en orden, de uno en uno y de arriba a abajo.<br><br>"
response.write "<b>Solucin:</b><br>"
response.write "Retrocede pulsando el botn de <b>Retroceder</b> e intntalo de nuevo.<br><br>"
response.write "<input type='button' onclick='history.go(-1)' value='<< Retroceder' id='button'1 name='button'1>"
'finaliza la ejecucion
response.end
end if
if lngBeginFileName <> lngEndFileName then
'ruta de origen del archivo
strFilename = mid(strData,lngBeginFileName,lngEndFileName - lngBeginFileName)
tmpLng = instr(1,strFilename,"")
Do While tmpLng > 0
PrevPos = tmpLng
tmpLng = instr(PrevPos + 1,strFilename,"")
Loop
FileName = right(strFilename,len(strFileName) - PrevPos)
lngCT = instr(1,strData,"Content-Type:")
If lngCT > 0 then
lngBeginPos = instr(lngCT,strData,chr(13) & chr(10)) + 4
else
lngBeginPos = lngEndFileName
end if
lngEndPos = len(strData)
lngDataLenth = lngEndPos - lngBeginPos
strFileData = mid(strData,lngBeginPos,lngDataLenth)
'instancia el FSO para grabar el archivo
Set fso = CreateObject("Scripting.FileSystemObject")
'ruta de destino y nombre del archivo
strFilenameDest = server.mappath(".") & "" & FileName
Set f = fso.OpenTextFile(strFilenameDest, ForWriting, true)
'guardamos el archivo
f.Write strFileData
set f = nothing
set fso = nothing
lngNumberUploaded = lngNumberUploaded + 1
end if
lngCurrentBegin = instr(1,strDataWhole,strBoundry)
lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1
loop
response.write "Fichero(s) subido(s) al servidor<br><br>"
response.write "[<b>" & lngNumberUploaded & "</b>] fichero(s) subidos al servidor.<br><br>"
response.write "<input type=button onclick='document.location=" & chr(34) & "up.asp" & chr(34) & "' value='<< Enviar ms Archivos' id='button'1 name='button'1>"
end select
%>

</body>
</html>