elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Subir varios archivos FTP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Subir varios archivos FTP  (Leído 2,418 veces)
SrTrp


Desconectado Desconectado

Mensajes: 323


Script/C#


Ver Perfil
Subir varios archivos FTP
« en: 14 Febrero 2020, 06:10 am »

Hola que tal lo que quiero es subir varias imagenes via ftp pero solo logro subir la primera que escojo, no conozco bien las propiedades del $_FILE, intente crear un for basado en el SIZE del $_FILE pero solo me da el tamaño del archivo mas no cuantos tengo.
Aqui esta donde tengo el script y lo mando via ajax
Código
  1. <input id="archivo" type="file"  name="archivo" multiple>
  2. <button type="button" id="files"> Subir </button>
  3. <script src="jquery.js"></script>
  4.  
  5.  
  6. $(document).ready(function () {
  7.        $('#files').click(function () {
  8.             var datos = $('#archivo').prop('files')[0];
  9.  
  10.             var form_data = new FormData();                  
  11.             form_data.append('file', datos );
  12.            $.ajax({
  13.                data: form_data ,
  14.                url: "subida.php",
  15.                type: "POST",
  16.                contentType: false,
  17.                processData: false,
  18.                success:
  19.                        function (r) {
  20.                            alert('' + r);
  21.                        }
  22.            });
  23.        });
  24.    });
  25.  
Y aqui esta mi php
Código
  1. <?php
  2. $ftp_server = "127.0.0.1";
  3. $ftp_usuario = "root";
  4. $ftp_pass = "";
  5. $con_id = ftp_connect($ftp_server);
  6. $lr = ftp_login($con_id, $ftp_usuario, $ftp_pass);
  7.  
  8. if ((!$con_id) || (!$lr)) {
  9.    echo 'NO SE PUDO CONECTAR';
  10.    exit;
  11. } else {
  12.    echo 'CONECTADO CORRECTAMENTE';        
  13.        if (!empty($_FILES['file']['name'])) {
  14.            $temp = explode(".", $_FILES['file']['name']);
  15.            $source_file = $_FILES['file']['tmp_name'];          
  16. $nombre = $_FILES['file']['name'];
  17.  
  18.            $subio = ftp_put($con_id,  $nombre, $source_file, FTP_BINARY);
  19.  
  20.            if ( 0 < $_FILES['file']['error'] ) {
  21.                echo 'Error: ' . $_FILES['file']['error'] . '<br>';
  22.            }
  23.            else {
  24.  
  25.               print_r($_FILES['file']['name']);
  26.            }
  27.        } else {
  28.            echo ' NO SELECCIONÓ NINGUN ARCHIVO';
  29.        }
  30.  
  31.  
  32. }
  33.  
  34. ?>
  35.  


« Última modificación: 15 Febrero 2020, 03:42 am por SrTrp » En línea

MetaNoia

Desconectado Desconectado

Mensajes: 33



Ver Perfil WWW
Re: Subir varios archivos FTP
« Respuesta #1 en: 27 Febrero 2020, 23:32 pm »

Muy buenas, lo que puedes hacer es poner en el atributo "name" del input los corchetes para indicar al php que se trata de un array.
Código
  1. <input id="archivo" type="file"  name="archivos[]" multiple>
  2.  

En tu código js te recomendaría que le pases un nombre al parámetro para luego en el php coger los datos en base al nombre.
Código
  1. $.ajax({
  2.                data :
  3.                {
  4.                         "files":form_data
  5.                } ,
  6.                url: "subida.php",
  7.                type: "POST",
  8.                contentType: false,
  9.                processData: false,
  10.                success:
  11.                        function (r)
  12.                        {
  13.                            alert('' + r);
  14.                        }
  15.            });
  16.  
  17.  
Después desde php para facilitar las cosas en vez de usar el array global $_FILES puedes coger el parámetro POST que yo he llamado "files" para coger el array de ficheros.
Código
  1. $files = $_POST["files"];
  2. foreach($files as $file)
  3. {
  4.      //Subir fichero al ftp
  5. }
  6.  

Aquí te dejo documentación con ejemplos.
https://www.php.net/manual/en/features.file-upload.multiple.php

Saludos



En línea

Código:
<?php
       header("Location: TheHackerWay");
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Subir varios archivos FTP
« Respuesta #2 en: 28 Febrero 2020, 03:30 am »

$_FILES es un array. Usa count para obtener el tamaño de un array.
$numArchivos = count($_FILES);

Igual te interesa filtrar y demás. Mirando por SO dicen que puede ser necesario para remover strings vacios del array.

https://stackoverflow.com/questions/2704314/multiple-file-upload-in-php
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Subir archivos a un ftp « 1 2 3 »
Programación Visual Basic
RED_HORSE 22 7,083 Último mensaje 28 Abril 2006, 01:40 am
por RED_HORSE
Subir archivos...
Programación Visual Basic
sp26 2 1,714 Último mensaje 30 Diciembre 2006, 12:46 pm
por skapunky
Subir archivos
PHP
zhynar_X 3 2,307 Último mensaje 10 Agosto 2007, 03:46 am
por дٳŦ٭
ayuda subir varios archivos
PHP
kakashi20 4 4,777 Último mensaje 20 Febrero 2011, 07:54 am
por Castg!
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines