PHP - problema creando sistema de carga de archivos

 
Vista:
sin imagen de perfil

problema creando sistema de carga de archivos

Publicado por Carlos (20 intervenciones) el 16/10/2014 03:23:18
Buenas, estoy queriendo hacer un sistema de carga de archivos (Solo RARS o ZIP) pero tengo un problema y es que cuando subo el archivo, no me sale nada. Ni que se subio correctamente, ni ningún else del fallo de la carga del archivo. Lo hice yo al sistema, soy mas o menos nuevo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<form action="demo.php" enctype="multipart/form-data" method="post">
<label for="File">File:<input name="userfile" type="file" /></label>
<input type="submit" name="Upload" value="upload" /> </form>
 
<?php
 
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0){
 
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fileError = $_FILES['userfile']['error'];
 
$tmp_directory = 'tmp_demos/';
$ext_str = "rar, zip";
$allowed_extension = explode(',' , $ext_str);
$max_file_size = 153600000;
$ext = substr($_FILES['userfile']['name'], strrpos($_FILES['userfile']['name'], '.') + 1);
 
 
// Check that the files to upload are RAR or ZIP
if(!in_array($ext, $allowed_extension)){
echo "only".$ext_str." files allowed to upload";
}
 
//Check that the files don't exceeds the max file size
if($_FILES['userfile']['size'] > $max_file_size){
echo "only the file less than ".$max_file_size."mb  allowed to upload";
}

if(!empty($fileName)) {
 
		if($error==0){
					
					mysql_connect("localhost","root","");
	 
					mysql_select_db("demo_web");

					$query = "INSERT INTO tmp_demos (recup_user, recup_name, recup_type, recup_size, recup_date)"."VALUES ('".USERID."', '$fileName', '$fileType', '$fileSize', '".time()."')";
					mysql_query($query) or die('Error, fallo la consulta');

					echo "El archivo $fileName se subió correctamente";
 
					}
		else{
		echo "Error con el archivo. <br> El archivotiene un error en la subida";
		}
	}
	else{
		echo "Error con el archivo. <br> El archivo no tiene nombre";
	}

}

?>



¿Cuál puede ser el problema por el cuál no me tira error, no carga el archivo, ni nada? El action del form va al mismo archivo donde esta el php (llamado: demo.php)

Muchas Gracias
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema creando sistema de carga de archivos

Publicado por xve (6935 intervenciones) el 16/10/2014 10:27:31
Hola Carlos, no esta muy bien tabulado tu código, pero podría ser que por ejemplo la variable $_POST['upload'] este vacía?
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

problema creando sistema de carga de archivos

Publicado por Carlos (20 intervenciones) el 16/10/2014 17:27:46
No esta bien tabulado aca, me cuesta que quede bien el código jaja (en mi php si :P ). Es correcto lo que me dijiste. El problema esta en que en el formulario yo defini:

1
<input type="submit" name="Upload" value="upload" />

Y en la sentencia:

1
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0){

Si se observa bien, en el atributo "name" del formulario defini Upload con mayúscula y cuando lo paso a ver si se seteo en el if, esta con minúscula, y eso me causo el problema (no me había dado cuenta, lo pensé pero no revise eso)

Muchas Gracias!
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
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema creando sistema de carga de archivos

Publicado por xve (6935 intervenciones) el 16/10/2014 20:21:27
Gracias por comentarlo!!!
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 Vainas
Val: 34
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

problema creando sistema de carga de archivos

Publicado por Vainas (262 intervenciones) el 16/10/2014 11:20:12
Buenas:

1
if($error==0){

Esta variable no ha sido declarada antes... no se si el error pueda venir de aqui.

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
sin imagen de perfil

problema creando sistema de carga de archivos

Publicado por Carlos (20 intervenciones) el 16/10/2014 17:28:44
Es correcto también lo que me decis vos, no declare nunca la variable $error. Me confundí y $error sería lo que yo declaré como $fileError. Corregido

Muchas Gracias!
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

problema creando sistema de carga de archivos

Publicado por Carlos (20 intervenciones) el 16/10/2014 17:32:32
Gracias a los dos usuarios por responderme y hacerme dar cuenta de los errores! Ahora el código me funciona correctamente. Si alguien tiene algún comentario de que esta mal o es vulnerable, por favor avisarme como podría mejorarlo! (Próximamente lo pasaré a objetos, pero por ahora no)

Aclaración: Los if estaban mal, no seguían un orden. Asíque así me quedo el código completo (capas a alguien le sirva):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<form action="longjump.php" enctype="multipart/form-data" method="post">
<input type="hidden" name="max_file_size" value="10240000">
<label for="File">File:<input name="userfile" type="file" /></label>
<input type="submit" name="upload" value="Upload" /> </form>
 
<?php
 
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0){
 
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fileError = $_FILES['userfile']['error'];
 
$tmp_directory = 'tmp_demos/';
$ext_str = "rar";
$allowed_extension = explode(',' , $ext_str);
$max_file_size = 10240000;
$ext = substr($_FILES['userfile']['name'], strrpos($_FILES['userfile']['name'], '.') + 1);
 
//Check that the name is not empty
if(!empty($fileName)) {
 
               //Check that is an error on the file
		if($fileError==0){
 
			// Check that the files to upload are RAR
			if(in_array($ext, $allowed_extension)){
 
				//Check that the files don't exceeds the max file size
				if($_FILES['userfile']['size'] <= $max_file_size){
 
					mysql_connect("localhost","root","");
 
					mysql_select_db("demo_web");
 
					$query = "INSERT INTO tmp_demos (recup_user, recup_name, recup_type, recup_size, recup_date)"."VALUES ('".USERID."', '$fileName', '$fileType', '$fileSize', '".time()."')";
					mysql_query($query) or die('Error, fallo la consulta');
 
					echo "El archivo $fileName se subió correctamente";
 
					}
					else{
						echo "only the file less than ".$max_file_size."mb  allowed to upload";
						}
				}
				else{
					echo "only ".$ext_str." files allowed to upload";
			}
		}
		else{
			echo "Unexpected error when you try to upload file! Try again";
		}
	}
	else{
		echo "Error! The name of the file is empty";
	}
 
}

PD: Saque que el tipo de archivo sea ZIP ya que no me funcionaba bien, no se porque todavía. Pero el de RAR funciona perfecto.
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

problema creando sistema de carga de archivos

Publicado por Carlos (20 intervenciones) el 16/10/2014 17:56:09
Agrege un IF más que verifica si el archivo ya existe en la base de datos.
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