Foros del Web » Programando para Internet » PHP »

sobre los permisos de los archivos subidos

Estas en el tema de sobre los permisos de los archivos subidos en el foro de PHP en Foros del Web. Hola a todos, tengo una duda que aunque en teoría es sencilla no he podido solucionar y por tanto acudo a ustedes a ver si ...
  #1 (permalink)  
Antiguo 24/09/2012, 10:18
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
sobre los permisos de los archivos subidos

Hola a todos, tengo una duda que aunque en teoría es sencilla no he podido solucionar y por tanto acudo a ustedes a ver si me ayudan a encontrar la luz.

En estos momentos he usado un script muy sencillo para subir imagenes y redimensionarlas tomando como ejemplo un código de la página de Adam Khoury. Como pueden ver el script es muy sencillo y lo que hace simplemente es tomar la imagen, la sube, crear la imagen redimensionada y crear el thumbnail.

La duda ahora es al momento de borrar la imagen original. La imagen original se crea sin permisos de lectura y por tanto no es posible ver la imagen directamente desde la carpeta, sin embargo las imagenes redimensionadas si se ven perfectamente y estas se pueden manipular sin problemas. Si intento borrar la imagen original con unlink en teoría la borra pero en realidad lo que deja es un archivo de 0 bytes que lo que genera es basura y si deseo posteriormente borrar la carpeta me toca primero borrar manualmente esta imagen.

Hasta el momento lo que he intentado hacer es crear la carpeta de subida con mkdir con permisos 0777 y 0644 y de igual forma he tratado de cambiar los permisos de la imagen subida tratando de hacer lo mismo pero no ha dado efecto.

Como no se si estoy dejando pasar por alto algo "obvio" (que en estos momentos para mi no lo es) les agradezco me colaboren o me den guias de donde puedo buscar y en que puedo estar fallando.

p.s. Para referencia adicional lo estoy probando en un servidor local con Windows, no se si eso hace que no tome los permisos correctamente.

p.s.2. Pues de momento en encontrado una solución temporal y es reemplazar la función move_uploaded_file por copy y al parecer ya me trabaja sin ningún problema. Igual no soy de los que me gusta quedarme con la duda y si alguien sabe porque el archivo no se puede leer con move_uploaded_file y si con copy le agradeceria enormemente me explicara a mi y en general a todos los interesados.

Código PHP:
<!-- -------------------------------------------- -->
<!-- "my_file.php" that has the simple form on it -->
<!-- -------------------------------------------- -->
                       
<form enctype="multipart/form-data" method="post" action="image_upload_script.php">
Choose your file here:
<input name="uploaded_file" type="file"/><br /><br />
<input type="submit" value="Upload It"/>
</form>

<!-- -------------------------------------------- -->
<!-- "image_upload_script.php" -->
<!-- -------------------------------------------- -->

<?php
// Access the $_FILES global variable for this specific file being uploaded
// and create local PHP variables from the $_FILES array of information
$fileName $_FILES["uploaded_file"]["name"]; // The file name
$fileTmpLoc $_FILES["uploaded_file"]["tmp_name"]; // File in the PHP tmp folder
$fileType $_FILES["uploaded_file"]["type"]; // The type of file it is
$fileSize $_FILES["uploaded_file"]["size"]; // File size in bytes
$fileErrorMsg $_FILES["uploaded_file"]["error"]; // 0 for false... and 1 for true
$fileName preg_replace('#[^a-z.0-9]#i'''$fileName); // filter the $filename
$kaboom explode("."$fileName); // Split file name into an array using the dot
$fileExt end($kaboom); // Now target the last array element to get the file extension

// START PHP Image Upload Error Handling --------------------------------
if (!$fileTmpLoc) { // if file not chosen
    
echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
} else if(
$fileSize 5242880) { // if file size is larger than 5 Megabytes
    
echo "ERROR: Your file was larger than 5 Megabytes in size.";
    
unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
    
exit();
} else if (!
preg_match("/.(gif|jpg|png)$/i"$fileName) ) {
     
// This condition is only if you wish to allow uploading of specific file types    
     
echo "ERROR: Your image was not .gif, .jpg, or .png.";
     
unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
     
exit();
} else if (
$fileErrorMsg == 1) { // if file upload error key is equal to 1
    
echo "ERROR: An error occured while processing the file. Try again.";
    exit();
}
// END PHP Image Upload Error Handling ----------------------------------
// Place it into your "uploads" folder mow using the move_uploaded_file() function
$moveResult move_uploaded_file($fileTmpLoc"uploads/$fileName");
// Check to make sure the move result is true before continuing
if ($moveResult != true) {
    echo 
"ERROR: File not uploaded. Try again.";
    exit();
}
// Include the file that houses all of our custom image functions
include_once("ak_php_img_lib_1.0.php");
// ---------- Start Adams Universal Image Resizing Function --------
$target_file "uploads/$fileName";
$resized_file "uploads/resized_$fileName";
$wmax 500;
$hmax 500;
ak_img_resize($target_file$resized_file$wmax$hmax$fileExt);
// ----------- End Adams Universal Image Resizing Function ----------
// ---------- Start Adams Convert to JPG Function --------
if (strtolower($fileExt) != "jpg") {
    
$target_file "uploads/resized_$fileName";
    
$new_jpg "uploads/resized_".$kaboom[0].".jpg";
    
ak_img_convert_to_jpg($target_file$new_jpg$fileExt);
}
// ----------- End Adams Convert to JPG Function -----------
// Display things to the page so you can see what is happening for testing purposes
echo "The file named <strong>$fileName</strong> uploaded successfuly.<br /><br />";
echo 
"It is <strong>$fileSize</strong> bytes in size.<br /><br />";
echo 
"It is an <strong>$fileType</strong> type of file.<br /><br />";
echo 
"The file extension is <strong>$fileExt</strong><br /><br />";
echo 
"The Error Message output for this upload is: $fileErrorMsg";
?>

<!-- -------------------------------------------- -->
<!-- "ak_php_img_lib_1.0.php" -->
<!-- -------------------------------------------- -->

<?php
// Adam Khoury PHP Image Function Library 1.0
// ----------------------- RESIZE FUNCTION -----------------------
// Function for resizing any jpg, gif, or png image files
function ak_img_resize($target$newcopy$w$h$ext) {
    list(
$w_orig$h_orig) = getimagesize($target);
    
$scale_ratio $w_orig $h_orig;
    if ((
$w $h) > $scale_ratio) {
           
$w $h $scale_ratio;
    } else {
           
$h $w $scale_ratio;
    }
    
$img "";
    
$ext strtolower($ext);
    if (
$ext == "gif"){ 
    
$img imagecreatefromgif($target);
    } else if(
$ext =="png"){ 
    
$img imagecreatefrompng($target);
    } else { 
    
$img imagecreatefromjpeg($target);
    }
    
$tci imagecreatetruecolor($w$h);
    
// imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h)
    
imagecopyresampled($tci$img0000$w$h$w_orig$h_orig);
    if (
$ext == "gif"){ 
        
imagegif($tci$newcopy);
    } else if(
$ext =="png"){ 
        
imagepng($tci$newcopy);
    } else { 
        
imagejpeg($tci$newcopy84);
    }
}
// ---------------- THUMBNAIL (CROP) FUNCTION ------------------
// Function for creating a true thumbnail cropping from any jpg, gif, or png image files
function ak_img_thumb($target$newcopy$w$h$ext) {
    list(
$w_orig$h_orig) = getimagesize($target);
    
$src_x = ($w_orig 2) - ($w 2);
    
$src_y = ($h_orig 2) - ($h 2);
    
$ext strtolower($ext);
    
$img "";
    if (
$ext == "gif"){ 
    
$img imagecreatefromgif($target);
    } else if(
$ext =="png"){ 
    
$img imagecreatefrompng($target);
    } else { 
    
$img imagecreatefromjpeg($target);
    }
    
$tci imagecreatetruecolor($w$h);
    
imagecopyresampled($tci$img00$src_x$src_y$w$h$w$h);
    if (
$ext == "gif"){ 
        
imagegif($tci$newcopy);
    } else if(
$ext =="png"){ 
        
imagepng($tci$newcopy);
    } else { 
        
imagejpeg($tci$newcopy84);
    }
}
// ------------------ IMAGE CONVERT FUNCTION -------------------
// Function for converting GIFs and PNGs to JPG upon upload
function ak_img_convert_to_jpg($target$newcopy$ext) {
    list(
$w_orig$h_orig) = getimagesize($target);
    
$ext strtolower($ext);
    
$img "";
    if (
$ext == "gif"){ 
        
$img imagecreatefromgif($target);
    } else if(
$ext =="png"){ 
        
$img imagecreatefrompng($target);
    }
    
$tci imagecreatetruecolor($w_orig$h_orig);
    
imagecopyresampled($tci$img0000$w_orig$h_orig$w_orig$h_orig);
    
imagejpeg($tci$newcopy84);
}
?>
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 24/09/2012 a las 10:49

Etiquetas: imagenes, permisos, variables
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 20:39.