Jueves 14 de Noviembre de 2024, 18:26
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
PHP
(Moderador:
F_Tanori
) »
Ftp En Php -subir Archivos-
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ftp En Php -subir Archivos- (Leído 2401 veces)
Kyrylys
Miembro activo
Mensajes: 80
Ftp En Php -subir Archivos-
«
en:
Lunes 19 de Febrero de 2007, 19:28 »
0
hola me gustaia que me echaseis un ojo a esto a ver si entre todos encontramos una solución.
estoy haciendo la parte de subir archivos a un servidor en unix a través de php.
el problema es que sólo me sube el archivo si está en el mismo directorio que la web.
trabajo con wamp y el servidor tiene una version php 4.3.9
yo lo que quiero es que al pasarle un archivo mediante un input type="file"
me deje subirlo desde cualquier directorio de pc, que para algo deja examinar
pero como digo solo me deja si esta en el mismo directorio.
Código: Text
<?php
require ("global.php");
echo("conectando a ftp.........$ftp_server $ftp_user $ftp_pass");
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if(!$login_result)
{
echo("no conecta");
}
else {echo("\n conecta!!!!!!!!<br>");}
ftp_pasv($conn_id,TRUE);
//root del server donde sta alojado
$root=$HTTP_SERVER_VARS['DOCUMENT_ROOT'];
$local_file=$_REQUEST["archivo"];
echo $local_file;
$server_path=$root;
if (ftp_put($conn_id,"html/".$local_file,$local_file,FTP_BINARY))
{
echo ("Se ha subido el archivo".$local_file);
}
else
{
echo ("\nWWWWWaaaaaacccccCCCCCKKKKkkkk<br>".$server_path."<br>".$local_file);
}
// close the connection*/
ftp_close($conn_id);
?>
he probado con dirname y basename y basename me lo identifica bien, pero de dirname me devuelve . -un punto-
alguna hipótesis?
gracias
Tweet
su -
Moderador
Mensajes: 2349
Re: Ftp En Php -subir Archivos-
«
Respuesta #1 en:
Martes 20 de Febrero de 2007, 01:22 »
0
Yo te puedo dar otra solucion mas linda pero es en Perl... no se si te sirva, pero primero:
No se supone que tienes que ir al directorio (cwd) antes de subier el fichero?
Si no conecta... por que el programa sigue corriendo y no para?
Código: Text
#!/usr/bin/env perl
use strict;
use Net::FTP;
my $ftp_server = "algun_servidor.com";
my ($usuario, $password) = ('usuario', 'password123');
my $ftp = Net::FTP->new($ftp_server, Debug => 0) or die "No se pudo conectar a $ftp_server: $@\n";
$ftp->login($usuario, $password) ir die "Login error ", $ftp->message;
$ftp->cwd("/html") or die "CWD /html : ", $ftp->message;
$ftp->put("fichero") or die "put fichero: ", $ftp->message;
$ftp->quit;
Claro, esto no esta diseñado para CGI, habria que usar CGI (una 7 lineas mas o menos, no se)
Pero espero que te de una idea
*******PELIGRO LEE ESTO!!*******
There is no place like 127.0.0.1
Conecto luego existo, no conecto luego insisto.
Kyrylys
Miembro activo
Mensajes: 80
Re: Ftp En Php -subir Archivos-
«
Respuesta #2 en:
Martes 20 de Febrero de 2007, 09:58 »
0
gracias, pero aún no me he metido con perl
de todas formas la conexión la hace sin ningún problema, el problema es que solo sube si el archivo está en el mismo directorio del gestor_ftp, si le dices que lo coja de otro directorio (escritorio, mis documentos, o la carpeta que sea) es cuando no lo sube y da el waaack!!
Citar
No se supone que tienes que ir al directorio (cwd) antes de subier el fichero?
cwd?? no entendí esa parte. y si, lo que quiero es pasarle el directorio en el que esté el archivo dentro de todo el pc
-siento reiterarme-
su -
Moderador
Mensajes: 2349
Re: Ftp En Php -subir Archivos-
«
Respuesta #3 en:
Martes 20 de Febrero de 2007, 21:17 »
0
Buno, lo de Perl no importa, solo era un ejemplo... solo queria mostrar la estructura.
CWD quiere decir change work directory pero para poner un fichero en X lugar se puede hacer (no se si con esa libreria de PHP) directamente con ftp_put puesto que tienes que dar el nombre local (del fichero) y el que tomara en el servidor ftp.
Código: Text
<?php
require ("global.php");
echo("conectando a ftp... $ftp_server $ftp_user $ftp_pass"); //esto no es seguro!!!!
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if(!$login_result)
{
echo("no conecta");
//aqui deberi de terminal el programa, depronto con exit, no se como lo trabajes.
}
else {echo("\n conecta!!!!!!!!<br>");}
ftp_pasv($conn_id,TRUE);
//root del server donde sta alojado
$root=$HTTP_SERVER_VARS['DOCUMENT_ROOT'];
$local_file=$_REQUEST["archivo"];
echo $local_file;
$server_path=$root;
if (ftp_put($conn_id,"html/".$local_file,$local_file,FTP_BINARY)) // mira bien esta parte...
{
echo ("Se ha subido el archivo".$local_file);
}
else
{
echo ("\nWWWWWaaaaaacccccCCCCCKKKKkkkk<br>".$server_path."<br>".$local_file);
//Nuevamente, el programa continua, y no muere... esto es un bug
}
// close the connection*/
ftp_close($conn_id);
?>
Otra solucion ( en PHP
)
http://inebria.com/phpftp/ftp.phps
*******PELIGRO LEE ESTO!!*******
There is no place like 127.0.0.1
Conecto luego existo, no conecto luego insisto.
Kyrylys
Miembro activo
Mensajes: 80
Re: Ftp En Php -subir Archivos-
«
Respuesta #4 en:
Martes 20 de Febrero de 2007, 23:52 »
0
gracias
su -
ahor te entiendo un poco mejor, gracias por aclararme lo de que seguia corriendo xd
y también por el link, mañana lo miraré con más detenimiento ^^
suelo tratarlo con
Código: Text
die()
ya le pondre, de hecho sé que el código necesita un poco de "brillo" por ahora sólo es un testeo.
El tema de la seguridad.. bueno lo trato desde otra página, más o menos la estructura es ésta:
hay un login que comprueba que exista un user y un pass, en caso de que esté setteado lo desssetea, si va mal die, si no sigue hasta una página que tiene un menú, en una de esas casillas esta el link que va a un formulario de subir archivos ( que es el que tiene el input type="file") y esto que he dejado aquí es el gestor del formulario.
en el formulario compruebo de nuevo que el user y el pass seteados estén en la bd
más tarde aunmentaré más la seguridad comprobando que no hay dos sesiones simultáneas del mismo user, que si haces 3 intentos de meter un user/pass válido te banee durante un periodo de tiempo...
Pero vámos que hoy por hoy me interesa esto, y lo demás poco a poco que bastante ambiciosos me salen los proyectos con el poco tiempo que llevo con php... XD
muchas gracias otra vez, espero sacar un hueco mañana para probar y decir como va
Kyrylys
Miembro activo
Mensajes: 80
Re: Ftp En Php -subir Archivos-
«
Respuesta #5 en:
Miércoles 7 de Marzo de 2007, 18:26 »
0
bueno al final lo consegui ^^
está un poco diferente pero funciona
aqui les dejo los códigos
Codigo para el formulario
Código: Text
<?php
echo("\n\n<form name=\"gestor_ftp\" method=\"post\" enctype=\"multipart/form-data\" action=\"gestor_ftp.php\">");
echo("
<table border=\"5\" cellpadding=\"0\" cellspacing=\"0\" valign=\"center\" align=\"center\" style=\"position:relative; top:50px; left:0px;\">
<tr>
<td><input type=\"file\" name=\"archivo\"/><td>
<td>
<select name=\"accion\">
<option value=\"imagen\">Imagen</option>
<option value=\"pdf\">PDF</option>
</select>
</td>
<td><input type=\"submit\" name=\"Enviar\" value=\"Subir\"></td>
</tr>
</table></form>");
?>
Codigo del gestor
Código: Text
<?php
header("Refresh: 3; URL=http:/URL/main.php");//al acabar de subir redireccionara a la main
require ("global.php");// aqui se define el user,pass etc
// Primero creamos un ID de conexión a nuestro servidor
$conn_id = ftp_connect($ftp_server);
// login
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if(!$login_result)
{
echo("no conecta");
die();
}
else{
//si sube a IMG o PDF
$accion=$_REQUEST["accion"];
switch ($accion) {
case imagen:
$tipo="/IMG/";
break;
case pdf:
$tipo="/PDF/";
break;}
// Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP
// Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica
// el nombre del archivo
$file = $_FILES["archivo"]["name"];
// Este es el nombre temporal del archivo mientras dura la transmisión
$temporal = $_FILES["archivo"]["tmp_name"];
echo "Subiendo Archivo ...<br />";
echo "<br />$local<br />";
// Juntamos la ruta del servidor con el nombre real del archivo
// Tomando en cuenta la ruta de nuestro root
//$path es el lugar "raiz" donde se subirán los archivos
//$tipo es la subcarpeta donde se colocará el archivo
//$file es el archivo a subir
$path="URL RAIZ";
$ruta = $path . $tipo . $file;
// Verificamos si ya se subio el archivo temporal
if (is_uploaded_file($temporal)){
// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
copy($temporal, $ruta);
echo("El archivo ".$file." se subió con éxito al servidor <br />");
/*
//al estar con case no funciona porque lo toma todo como si fuese imagen
if ($tipo="/IMG/")
{
echo(" imágenes.\n<br />");
}
else if ($tipo="/PDF/")
{
echo(" archivos en .pdf.\n<br />");
} */
echo("La página volverá a la pantalla de inicio de Administración");
}
// Sino se pudo subir el temporal
else {
echo "no se pudo subir el archivo " . $local;
}
//echo "Ruta: " . $ruta;
}
?>
como puede verse está pensado para subir a diferentes carpetas dentro de un servidor, pueden ser IMG, Documentos, Pdf...etc
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
PHP
(Moderador:
F_Tanori
) »
Ftp En Php -subir Archivos-