Foros del Web » Programando para Internet » PHP »

subir archivos zip

Estas en el tema de subir archivos zip en el foro de PHP en Foros del Web. hola, al subir este tipo de archivo a una carpeta no lo hace solo me modifica el nombre.. y lo guarda en la base de ...
  #1 (permalink)  
Antiguo 20/07/2006, 11:28
Avatar de DarKy_DarKness  
Fecha de Ingreso: mayo-2006
Ubicación: Talca
Mensajes: 58
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta subir archivos zip

hola, al subir este tipo de archivo a una carpeta no lo hace solo me modifica el nombre.. y lo guarda en la base de datos el codigo es el sgte:
if ($documento3 == "" || existe_nombre_en_directorio($documento3) || !rename($HTTP_POST_FILES['archivo']['name'], $documento3)){ copy($HTTP_POST_FILES['archivo']['tmp_name'],"../directorio/".$documento3); //copia el archivo
?><script>alert('¡El archivo subio con exito!')</script><? $bandera_bd=1;
$switch=true;
}else{
?><script>alert('¡Archivo Existe!')</script><?
}
Saludos DarKy_DarKness
__________________
No hay nada mas que Solo yo en La Oscuridad...
  #2 (permalink)  
Antiguo 20/07/2006, 11:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Haces mención a algunas funciones .. el código se hace dificil de leer (usa el botón "PHP" para que quede coloreado) .. En definitiva sin pusieras el código en su -contexto- (completo) sería lo ideal para ver posibles errores.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 20/07/2006, 14:27
Avatar de DarKy_DarKness  
Fecha de Ingreso: mayo-2006
Ubicación: Talca
Mensajes: 58
Antigüedad: 18 años, 6 meses
Puntos: 0
codigo

Código PHP:
<?
if($bandera_guardar==0){
  
$nbre_archivo $HTTP_POST_FILES['archivo']['name']; 
  
$tipo_archivo $HTTP_POST_FILES['archivo']['type'];     
  
$tamano_archivo $HTTP_POST_FILES['archivo']['size']; 
  
$archi_temp $HTTP_POST_FILES['archivo']['tmp_name'];     
  
$ss=false;    
  
$cad=substr($HTTP_POST_FILES['archivo']['name'], -3);     
  
$tipos = array('zip','ZIP','rar''RAR','cpp','CPP','c','C','exe','EXE','doc','DOC','txt','TXT','pdf','PDF','swf','SWF','fla','FLA','xls','XLS','pps','PPS''bmp','BMP','jpg','JPG','gif','GIF''jpeg','JPEG''png','PNG''mpp','MPP''pub','PUB''sql','SQL''csv','CSV''h','H''dm2','DM2''ace','ACE''sxl','SXL''sml','SML''msi','MSI''dwg','DWG''bak','BAK','rtf','RTF','ppt','PPT','mdb','MDB','html','HTML','htm','HTM');
$vble=count($tipos);
for(
$i=0;$i<$vble;$i++){
if (
$tipos[$i]==$cad){
$shh=true;
$sdf=false;
break;
}else
$sdf=true;
$shh=false;
//echo "no sube"."<br>";
}
if (
$sdf){
?><script>alert('¡Extensión no valida!')</script><?
$switch
=true;
$shh=false;
}
if (
$shh){
if(
$tamano_archivo 200000){  
$consu="Select COUNT(doc_$sel) as num from banco_pruebas";     
$resu=pg_query($conexion_pg,$consu);
if(
$arreglo=pg_fetch_array($resu)){ 
$documento=$arreglo[num];
}
switch(
$sel){
case 
"pauta":
$estring="p";
$sd=true;
$switch=false;
break;
case 
"correccion":
$estring="c";
$sd=true;
$switch=false;
break;
case 
"nota_min":
$estring="m";
$sd=true;
$switch=false;
break;
case 
"nota_max":
$estring="x";
$sd=true;
$switch=false;
break;
}
if (
$documento!=""){
$documento=$documento 1;
$hs=false;    
}else{
$documento=1;
$hs=true;
}
$documento2="$estring$documento"
$cadena=substr($HTTP_POST_FILES['archivo']['name'], -4); 
$documento3=$documento2."$cadena"
error_reporting(E_ERROR);
if (
$documento3 == "" || existe_nombre_en_directorio($documento3) || !rename($HTTP_POST_FILES['archivo']['name'], $documento3)){
copy($HTTP_POST_FILES['archivo']['tmp_name'],"../directorio/".$documento3); //copia el archivo
?><script>alert('¡El archivo subio con exito!')</script><?
$bandera_bd
=1;
$switch=true;
}else{ 
?><script>alert('¡Archivo Existe!')</script><?
$switch
=true;
$fechas="";
$documento3="";
$archivo="";
}
$switch=true;
}
}else echo 
"<script>alert('¡Arhivo ha sobrepaso en tamaño!')</script>"
}
if(
$bandera_bd==1){
$consulta="select * from banco_pruebas where semestre_ano = '$sem_a' and id_asignatura = '$asignaturas' and anio_asignatura = '$ano_malla' and carrera_sede = '$sed$carrera' and orden = '$orden' and variante = '$variante' and jornada = '$jornada'";    //echo"Consulta: $consulta<br>";
$resultado=pg_query($conexion_pg$consulta); //echo $consulta."<br>";
if($fila=pg_fetch_array($resultado)){
$fechas=FecSQL($fechas);
$docto=$fila["doc_$sel"];
if(
$hs){
if (
file_exists("../directorio/$docto")){ //si existe el fichero en el directorio
if ($docto == "" ||  !unlink("../directorio/$docto")){
$cade=substr($HTTP_POST_FILES['archivo']['name'], -4); 
$docto="";
}
}
}
$modificar="update banco_pruebas set chk_$sel='1', fecha_$sel='$fechas', doc_$sel='$documento3' Where semestre_ano='$s_ano-$semestre' and id_asignatura='$asignaturas' and anio_asignatura='$ano_malla' and carrera_sede='$carrera_sede' and orden='$orden' and variante='$variante' and jornada='$jornada'";
pg_query($conexion_pg$modificar); 
$fechas=SQLFec($fechas);
$switch=true;
}else{
$hs=false;
$fechas=FecSQL($fechas);
$ingresar="insert into banco_pruebas (semestre_ano, id_asignatura, anio_asignatura, carrera_sede, orden, variante, jornada, chk_$sel, fecha_$sel, doc_$sel) values ('$s_ano-$semestre', '$asignaturas', '$ano_malla', '$carrera_sede', '$orden', '$variante', '$jornada', '$check', '$fechas',  '$documento3')";
pg_query($conexion_pg$ingresar);
$fechas=SQLFec($fechas);
$fechas="";
$switch=true;
}
}
}
necesito subir varios tipos de archivo y esto estan en un arreglo que los recorro, y comparo la extension del archivo que quiero subir, ademas antes de subirlo lo renombro dependiendo si es pauta, correccion, notaminima o notamaxima con numero, lo que trabajo bastante es con true o false, veras demasiado en el codigo, el problema en si que tengo es que se marea al recorrer el arreglo y comparar la extension que subo, a todo esto el archivo solo guarda en la base de datos el nombre, en una carpeta guarda el documento...
__________________
No hay nada mas que Solo yo en La Oscuridad...
  #4 (permalink)  
Antiguo 20/07/2006, 14:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Te hago algunas recomendaciones:

* No uses $HTTP_POST_FILES, usa $_FILES (por seguridad de tu aplicación/código).
* No valides la extensión del archivo como nombre .. sino por su formato MIME real. Ese dato lo tienes en $_FILES ...['type']

Cuando subes vários archivos .. faltó que pusieras el formulario que contiene los campos "file" .. pero da igual .. no estás tratando los archivos como debe .. es decir en forma de "array":

http://www.php.net/manual/en/feature...d.multiple.php

Extraido de la documentación oficial (comentarios de los usaurios, que veras al pié de esa sección); un simple ejemplo:

Cita:
User Contributed Notes
Uploading multiple files
Bob Doe
09-Aug-2005 12:17
Here is a the simple test form I needed, pieced togther from 2 or 3 posts in the documentation elsewhere.

Código PHP:
<html>
<head>
<title>HTML Form for uploading image to server</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>
<?php
//places files into same dir as form resides
foreach ($_FILES["pictures"]["error"] as $key => $error) {
   if (
$error == UPLOAD_ERR_OK) {
       echo
"$error_codes[$error]";
       
move_uploaded_file(
         
$_FILES["pictures"]["tmp_name"][$key], 
         
$_FILES["pictures"]["name"][$key
       ) or die(
"Problems with upload");
   }
}
?>
</body>
</html>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 20/07/2006, 15:32
Avatar de DarKy_DarKness  
Fecha de Ingreso: mayo-2006
Ubicación: Talca
Mensajes: 58
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta

hola...
muchas gracias voy a cambiar mi codigo
saludos DarKy_Darkness
__________________
No hay nada mas que Solo yo en La Oscuridad...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:12.