PHP - utilizar variable $_GET para nombrar archivo

 
Vista:
sin imagen de perfil

utilizar variable $_GET para nombrar archivo

Publicado por Hugo (37 intervenciones) el 10/01/2022 04:28:13
Estimados, buenas noches.

Estoy intentando llevar una variable a través de $_GET a otra página para poder concatenarla con el nombre de un documento subido por un cliente, es decir, a través de la misma llevo el id de una solicitud y cuando el cliente adjunta el comprobante, éste debería guardarse con el id y el nombre del documento que subió, por ejemplo: 176comprobante.pdf.

El problema es que no lo logro y no me doy cuenta que es lo que está mal, ya que si imprimo la variable me muestra el id de solicitud.

Si alguien me pudiera ayudar le estaría muy agradecido.

Adjunto el código:

<html>
<head>
<title>Intranet Universal SPS</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" type="text/css" href="../Cabecera/cabecera.css">
<link rel="stylesheet" type="text/css" href="../Login/iniciar_session.css">
<link rel="stylesheet" type="text/css" href="../Avatar/avatar.css">
<!--link rel="stylesheet" type="text/css" href="../Internacion/internacion2.css"-->
<!--link rel="stylesheet" type="text/css" href="../Formato_Form/formularios.css"-->
<link rel="stylesheet" type="text/css" href="comprobantes.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Kaisei+HarunoUmi:wght@500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.css"/>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.js"></script>
</head>
<body>
<?php
include ("../Conexion/conexion.php");
?>
<div id="Logo">
<img src= "../logo.jpg" class="soc"/>
</div>
<div id="Cabecera">
<?php
require ("../Login/iniciar_session.php");
?>
</div>
<?php
$dato=$_GET['idSolic'];
$formatos = array('.jpg', '.png', '.pdf');
$directorio = 'Comprobantes';
if (isset($_POST['ingresar'])){
$nombreArchivo = $dato.$_FILES['archivo']['name'];
$nombreTmpArchivo = $_FILES['archivo']['tmp_name'];
$ext= substr($nombreArchivo, strrpos($nombreArchivo, '.'));
if (in_array($ext, $formatos)){
if (move_uploaded_file($nombreTmpArchivo, "$directorio/$nombreArchivo")){
echo "Se subió el archivo $nombreArchivo exitosamente";
}else{
echo 'Ocurrió un error subiendo el archivo, valida los permisos de la carpeta "archivos"';
}
}else{
echo 'Aquí va el mensaje que quieres mostrar cuando un usuario suba un archivo con una extensión diferente';
}
}
?>


<?php
if ($dir = opendir($directorio)){
while ($archivo = readdir($dir)) {
if ($archivo != '.' && $archivo != '..'){
//este div es para darle caché y que se vea bien en todos los dispositivos. son clases del nuevo bootstrap -> framewrok css

}
}
}
?>


<div id="Contenido">
<img src= "../HospitalItaliano.jpg" class="fondo">
</div>
<div id="cont-form">
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" class="form" enctype="multipart/form-data">
<div class="formulario">
<h2 class="titulo">Adjuntar comprobantes</h2><br>
<div class="archivos" >
<input type="file" class="archivo" id="archvio" aria-describedby="fileHelp" name="archivo">
<small id="fileHelp" class="form-text text-muted">Archivos permitidos (.jpg .png .pdf)</small>
</div>
<br>
<button type="submit" name="ingresar" class="ingresar">Subir Archivo</button>
</div><br>
</form>
</div>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

utilizar variable $_GET para nombrar archivo

Publicado por Alejandro (832 intervenciones) el 10/01/2022 16:19:10
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
¿y cual es el problema?
¿que es lo que hace, lo que no hace o lo que debería hacer?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

utilizar variable $_GET para nombrar archivo

Publicado por Hugo (37 intervenciones) el 10/01/2022 16:39:32
Alejando, buenas tardes.

El problema es que no me reconoce la variable para el nombre del documento, es decir, quiero que $dato, sea parte de $nombreArchivo para que se guarde el documento en la carpeta "Comprobantes" con el id de solicitud (que es el que viene por $_GET) y el nombre del documento que suba el cliente.
En este momento el documento se guarda solo con el nombre original con el que se sube, pero quiero que a ese nombre original se le agregue el id de solicitud, ejemplo: 176comprobante.pdf, siendo 176 el id y "comprobante" el nombre original del archivo que adjunta el cliente.

Además de no guardarse como quiero me devuelve que en la línea 34 hay un error, diciéndome que el índice para idSolic es indefinido, o sea cuando declaro la variable a utilizar: $dato=$_GET['idSolic'];

Espero haberme hecho entender y puedas ayudarme a resolverlo.

Gracias.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

utilizar variable $_GET para nombrar archivo

Publicado por Alejandro (832 intervenciones) el 10/01/2022 22:10:40
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Bueno ahí surge tu problema, si no existe $_GET['idSolic'] es obvio que el nombre de archivo solo lleve $_FILES['archivo']['name'].
En el action del form debes tener file.php?idSolic=valor. Es importante que este escrito tal cual idSolic.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

utilizar variable $_GET para nombrar archivo

Publicado por Hugo (37 intervenciones) el 11/01/2022 00:01:19
Estimado Alejandro.

No sabes cuánto agradezco tu aporte, ahora no solo funciona como quería sino que también me ha dejado un nuevo aprendizaje, ya que estoy dando los primeros pasos en php.

Nuevamente gracias por tu valiosa ayuda!
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar