Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: yoelrodguez en 20 Enero 2021, 23:16 pm



Título: Como puedo capturar el nombre mientras subo archivos al servidor
Publicado por: yoelrodguez en 20 Enero 2021, 23:16 pm
Hola, tengo la siguiente situación. Estoy subiendo múltiples archivos al servidor pero necesito que una ves que el archivo este en el servidor me muestra el nombre y así sucesivamente con los que siguen. El proceso lo esto haciendo mediante ajax y php. Los archivos me suben sin problema pero el mensaje que recibo es el del último archivo y no mientras están subiendo. Les dejo el código para ver si me pueden ayudar.

Gracias

HTML
Código:
<div id="myModalmultpl" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel">Subir doctumento</h3>
    </div>
    <div class="modal-body">
        <?php echo for_open('#', array('class' => 'form-signin', 'id' =>'form-polizam')); ?>
        <div id="idsubiendo"></div>
        <input type="file" name="uploadfile[]" id="uploadfile[]" multiple />
        <input type="hidden" name="tipoupload" id="tipoupload" value="1" >
        <input type="button" name="submit" id="idsubmit" value="Subir">
        <?php echo for_close(); ?>
    </div>
    <div class="modal-footer">
        <button class="btn" data-dismiss="modal" aria-hidden="true">Cerrar</button>
    </div>
</div>

javascript

Código:
$("#idsubmit").on('click', function () {

try {

//obtenemos un array con los datos del archivo
var dataString = new FormData($("#form-polizam")[0]);
$.ajax({
url: 'index.php?c=gpagar&f=setgdrive',
type: 'POST',
data: dataString,
cache: false,
contentType: false,
processData: false,
dataType: 'json',
beforeSend: function () {
$("div#idsubiendo").html('<div class="alert alert-success"><b>Subiendo ...</b></div>');
},
//una vez finalizado correctamente
success: function (data) {
console.log(data);
bootbox.alert("<h6>El fichero ha sido subido al Google Drive: "+data.error+"</h6>");
location.reload();
},
//si ha ocurrido un error
error: function (data) {
console.log(data);
$("div#idsubiendo").html('');
bootbox.alert("A ocurrido un error por favor contacte con  el administrador");
}
});

} catch (err) {
bootbox.alert(err);
}
});

Php

Código:
foreach($datos as $val){
unset($_SESSION['idPol']);
$nombre = $val['name'];
$ext = pathinfo($nombre, PATHINFO_EXTENSION);
$aNombre = explode("-",$nombre);
$fecha = $aNombre[0]."-".$aNombre[1]."-".$aNombre[2];
//Traemos el id del movimiento.
$idmov = preg_replace('/[^0-9]+/','', $aNombre[4]);
$objMov = $gpa->get_movAutoId($idmov, $fecha);
$_SESSION['idPol'] = $objMov->id;
//Conformamos el nombre del fichro
$nameFile = $gpa->set_namefile($objMov->id_mov);

$path = "lib/gdriver/files/";
$nom = $path.$nombre;
$nom2 = $path.$nameFile.".".$ext;
rename($nom, $nom2);
//Extraemos el id de la empresa.
$obj = $emp->get_empresaNomId($aNombre[3]);
$fileid = $gpa->set_datagdrive($nameFile.".".$ext, $obj->id, $fecha);
$jdata['error'] = $fileid;
}
 


Título: Re: Como puedo capturar el nombre mientras subo archivos al servidor
Publicado por: yoelrodguez en 22 Enero 2021, 01:14 am
Hola a todos, ya logre resolver el problema que tenia a continuación les dejo el código por si alguien lo necesita.

Gracias

javascript
Código:
const input = document.getElementById('uploadfiles[]');
if(input.files && input.files[0])
datos = input.files;
$.each(datos,function (index, value) {
 
console.log(index+" "+value.name);
 
var dataString = new FormData($("#form-polizam")[0]);
dataString.append('uploadfile', value);
 
$.ajax({
url: 'index.php?c=gpagar&f=setgdrive',
type: 'POST',
data: dataString,
cache: false,
contentType: false,
processData: false,
dataType: 'json',
beforeSend: function () {
$("div#idsubiendo").html('<div class="alert alert-success"><b>Subiendo ... </b></div>');
},
//una vez finalizado correctamente
success: function (data) {
console.log(data);
$("div#idsubiendo").html('<div class="alert alert-success"><b>El fichero ha sido subido al Google Drive: '+data.error+' </b></div>');
},
//si ha ocurrido un error
error: function (data) {
console.log(data);
$("div#idsubiendo").html('');
bootbox.alert("A ocurrido un error por favor contacte con  el administrador");
}
});
});
Php

                                
Código:
$datos = upload_file($config);
unset($_SESSION['idPol']);
$nombre = $datos['name'];
$ext = pathinfo($nombre, PATHINFO_EXTENSION);
$aNombre = explode("-",$nombre);
$fecha = $aNombre[0]."-".$aNombre[1]."-".$aNombre[2];
//Traemos el id del movimiento.
$idmov = preg_replace('/[^0-9]+/','', $aNombre[4]);
$objMov = $gpa->get_movAutoId($idmov, $fecha);
$_SESSION['idPol'] = $objMov->id;
//Conformamos el nombre del fichro
$nameFile = $gpa->set_namefile($objMov->id_mov);
 
$path = "lib/gdriver/files/";
$nom = $path.$nombre;
$nom2 = $path.$nameFile.".".$ext;
rename($nom, $nom2);
//Extraemos el id de la empresa.
$obj = $emp->get_empresaNomId($aNombre[3]);
$fileid = $gpa->set_datagdrive($nameFile.".".$ext, $obj->id, $fecha);
$jdata['error'] = $nameFile.".".$ext;
echo json_encode($jdata);