La Web del Programador: Comunidad de Programadores
 
    Pregunta:  10557 - DEJAR A USUARIOS CARGAR FILES EN SERVIDOR SIN SER EN BDATOS
Autor:  Damian Ares
La duda es como hacer para que el usuario cargue un archivo en el servidor pero no quiero que se guarde en una base de datos sino en una subcarpeta del espacion que tengo en el servidor
la forma que tengo me da dos opciones, cargar en base datos o file.savetodisk pero tengo que poner toda la direccion:
C:\windows\escritorio\
como hago para que guarde en
http:\dominio.com\yo\carpeta\

  Respuesta:  cristian quintana bernal
hola,,,yo lo he echo con asp....lo ideas es: desde una formulario html pasar los datos y la carpeta que el cliente web cree en tu espacio de servidor a travez de una asp ,la asp maneja tres objetos dos dll de envio de email y descarga de archivo y creacion de directorio ,el tercero el objeto que pone cosas como archivos en esa carpeta creada por el cliente web. yo uso los sigiente jmail.dll envio de email w3,upload.dll descarga de archivos y por ultimo filesystemobject qie pono cosas en la carpeta. jmail y w3upload se bajan desde internet en dimac.net gratuitamente y funsiona para equipos con windows 98 filesystem debes leer en cursos asp disponobles .por ultimo necesitas el ip de un servidor de correo para que pruebes. toda la captura de los datos del html debes hacerlo con upload.form("algo") al continuacion te pego el codigo solo del asp..suerte
<%@ Language=VBScript %>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
'Create the JMail message Object
set msg = Server.CreateOBject("JMail.Message")
Set upload = Server.CreateObject("w3.Upload")
'Check for attachments and add them to the email
set attachment = upload.Form("attachment")
if attachment.IsFile then
msg.AddCustomAttachment attachment.filename, attachment.item, false
end if
'Set logging to true to ease any potential debugging
'And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true
'Get the form variables, using the upload object
Name = upload.Form("name")
SenderEmail = upload.Form("email")
Subject = "Regarding " & upload.Form("subject")
Recipient = upload.Form("recipient")
Body = upload.Form("mensaje")
'And apply them to the message
msg.From = SenderEmail
msg.FromName = Name
msg.AddRecipient Recipient
msg.Subject = Subject
msg.Body = Body
'To capture any errors which might occur, we wrap the call in an IF statement
if not msg.Send("tu numero de servidor de correo") then
Response.write "<pre>" & msg.log & "</pre>"
else
Response.write "mensaje enviado!"
end if
'And we're done! the message has been sent.
%>
<%
'se crea la instancia del objeto
'Set upload = Server.CreateObject("W3.Upload")
%>
<%
'se crea la instancia del objeto
Set fsys = CreateObject("Scripting.FileSystemObject")
%>
<%

' limpiar la cadena del usuario
carpeta=upload.form("carpeta")
carpeta=replace(carpeta,"."," ")
carpeta=replace(carpeta,">"," ")
carpeta=replace(carpeta,"<"," ")
carpeta=replace(carpeta,"/"," ")
carpeta=replace(carpeta,"\"," ")
carpeta=replace(carpeta,":"," ")
carpeta=replace(carpeta,"?"," ")
carpeta=replace(carpeta,"*"," ")
carpeta=replace(carpeta,chr(34)," ")
carpeta=replace(carpeta,"'"," ")
carpeta=trim(carpeta)
%>
<%
' existe carpeta de trabajo si no se crea
if not fsys.FolderExists("c:\uploads\" & carpeta) then
fsys.CreateFolder "c:\uploads\" & carpeta
End if
%>
<%
' crear archivo de texto con el mensaje
strmensaje=trim(upload.form("mensaje"))
if strmensaje<>"" then
fecha=replace(date,"/","")
hora=replace(time,":","")
hora=replace(hora,".","")
hora=replace(hora," ","")
archivotexto = "c:\uploads\" & carpeta & "\mensaje_" & fecha & "_"
archivotexto = archivotexto & hora & ".txt"
' crear el archivo de texto
set a = fsys.CreateTextFile(archivotexto,true)
a.writeline(strmensaje)
a.close
set a=nothing
end if
set fsys = nothing
%>
<%
' filtro de archivos
Set elarchivo = upload.Form("attachment")
if elarchivo.size>4194000 then 'tamaño en bytes
response.write "El archivo es demasiado grande para ser enviado.<p>"
' response.write "<a href='javascript:history.back()'>Regresar</a>"
'exit sub
end if
if instr(elarchivo.filename,".")<>0 then
extension=mid(elarchivo.filename,instr(elarchivo.filename,"."))
if trim(extension)=".exe" or trim(extension)=".vbs" then
response.write "Imposible enviar ese tipo de archivo.<p>"
'response.write "<a href='javascript:history.back()'>Regresar</a>"
'exit sub
end if
end if
%>
<%
'guardar el archivo
if elarchivo.IsFile then
strsave="c:\uploads\" & carpeta & "\" & elarchivo.filename
elarchivo.SaveToFile(strsave)
'elarchivo.SaveAsUniqueFile(strsave)
end if
Set upload = nothing
response.write "Se envio el archivo : " & elarchivo.filename
response.write "<br>Tamaño : " & elarchivo.size
%>
</BODY>
</HTML>