Autor Tema: Subir una imagen a una carpeta del servidor con PHP  (Leído 5775 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Subir una imagen a una carpeta del servidor con PHP
« : mayo 04, 2010, 07:36:29 am »
Hola amigos de Svcommunity hoy necesito que me ayuden con esto de subir una imagen a una carpeta del servidor, e logrado ya subir imágenes con un:

<input type="flie">

Pero al darle en examinar me deja seleccionar cualquier tipo de archivo me gustaria que al darle examinar en la ventana que abre solo deje seleccionar imagenes...

Espero me puedan ayudar.

Desconectado John Stark!

  • Sv Full Member
  • *
  • Mensajes: 906
  • I survived my first match, with only 2 broken ribs
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #1 : mayo 04, 2010, 08:05:55 am »
fijate que hasta ahorita no se como restringir eso!.. pero lo que podrias hacer es validar con javascript el tipo de archivo que subis... asi te evitas que suban archivos no deseados...

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #2 : mayo 04, 2010, 08:09:15 am »
Bueno pues en realidad eso es lo que hago no, no precisamente con JS pero si con PHP.

Gracias...

Desconectado Exau

  • MiembrosReales
  • *
  • Mensajes: 30
    • ForoDiabetes.tk
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #3 : mayo 04, 2010, 08:15:42 am »
Hola amigos de Svcommunity hoy necesito que me ayuden con esto de subir una imagen a una carpeta del servidor, e logrado ya subir imágenes con un:

<input type="flie">

Pero al darle en examinar me deja seleccionar cualquier tipo de archivo me gustaria que al darle examinar en la ventana que abre solo deje seleccionar imagenes...

Espero me puedan ayudar.

No sabía que el navegador se puede restringir, digo, lee tantos tipos de archivos que hasta los permite, y los que no puede pues simplemente te los descarga y solo en casos extremos te dice que no funkó... tengo entendido que con PHP lo que se puede hacer es fijar qué tipo de archivos permite subir, pero no qué tipo de archivos puedes buscar en tu disco local.

En este caso, puedes fijar las extensiones de los archivos. De esta manera te aseguras que solo se suban imágenes (.jpg, .gif, .png, etc.). Al menos eso es lo que yo sé  :roll:
"No puedes ir por la vida pensando en que todos los que conoces un día te decepcionarán..."
© Webmaster de ForoDiabetes.tk

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #4 : mayo 04, 2010, 09:50:42 am »
Bueno pues sera dejar que el usuario seleccione cualquier archivo y validar la extencion con PHP.

Gracias

Desconectado Kibalam

  • The Communiter-
  • *
  • Mensajes: 1612
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #5 : mayo 04, 2010, 09:57:54 am »
Bueno pues sera dejar que el usuario seleccione cualquier archivo y validar la extencion con PHP.

Gracias

te recomiendo que mejor sigas la sugerencia que te dio Vladimir y lo hagas con Javascript .. ya que si lo haces con PHP tendrias que involucrar a el servidor en una acción para mi ver es un poco innecesaria ...
"Esperar que la vida te trate bien porque seas buena persona es como esperar que un toro no te ataque porque seas vegetariano"

Desconectado pippin

  • Sv Member
  • ***
  • Mensajes: 301
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #6 : mayo 04, 2010, 10:00:20 am »
y como seria con JS

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #7 : mayo 04, 2010, 10:12:23 am »
te recomiendo que mejor sigas la sugerencia que te dio Vladimir y lo hagas con Javascript .. ya que si lo haces con PHP tendrias que involucrar a el servidor en una acción para mi ver es un poco innecesaria ...

Error mi querido marachito :)

Por cuestiones de seguridad los parámetros SIEMPRE se validan en el servidor.

¿Por qué? a cualquiera se le haría fácil saltarse la validación javascript y enviarte un PHP que funcione como backdoor o algo por el estilo. Más si no tenes cuidado con los permisos.

Lo mejor es que realize la validacion en ambos momentos. En el cliente solo para asegurarse de que se elija un JPG y en el servidor para evitar agujeros de seguridad.


Desconectado Kibalam

  • The Communiter-
  • *
  • Mensajes: 1612
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #8 : mayo 04, 2010, 10:17:41 am »
Error mi querido marachito :)

Por cuestiones de seguridad los parámetros SIEMPRE se validan en el servidor.

¿Por qué? a cualquiera se le haría fácil saltarse la validación javascript y enviarte un PHP que funcione como backdoor o algo por el estilo. Más si no tenes cuidado con los permisos.

Lo mejor es que realize la validacion en ambos momentos. En el cliente solo para asegurarse de que se elija un JPG y en el servidor para evitar agujeros de seguridad.


mmm lo tendré en cuenta la verdad...  pues yo no me había puesto a pensar en la seguridad.. pero viendo de ese punto tienes razón... :phew:

con lo de la validación acá te dejo un codigo  en PHP para hacer eso

Código: [Seleccionar]
<?php
function LimitAttach(tField,iType) { 
file=tField.value
if (
iType==1) { 
extArray = new Array(".gif",".jpg",".png"); 

if (
iType==2) { 
extArray = new Array(".swf"); 

if (
iType==3) { 
extArray = new Array(".exe",".sit",".zip",".tar",".swf",".mov",".hqx",".ra",".wmf",".mp3",".qt",".med",".et"); 

if (
iType==4) { 
extArray = new Array(".mov",".ra",".wmf",".mp3",".qt",".med",".et",".wav"); 

if (
iType==5) { 
extArray = new Array(".html",".htm",".shtml"); 

if (
iType==6) { 
extArray = new Array(".doc",".xls",".ppt"); 

allowSubmit false
if (!
file) return; 
while (
file.indexOf("\\") != -1file file.slice(file.indexOf("\\") + 1); 
ext file.slice(file.indexOf(".")).toLowerCase(); 
for (var 
0extArray.lengthi++) { 
if (
extArray[i] == ext) { 
allowSubmit true
break; 


if (
allowSubmit) { 
} else { 
tField.value=""
alert("Usted sólo puede subir archivos con extensiones " + (extArray.join(" ")) + "\nPor favor seleccione un nuevo archivo"); 

}  
?>


ese codigo me lo encontré acá Fuente

« Última Modificación: mayo 04, 2010, 10:24:57 am por Ilidan »
"Esperar que la vida te trate bien porque seas buena persona es como esperar que un toro no te ataque porque seas vegetariano"

Desconectado Jaru

  • The Communiter-
  • *
  • Mensajes: 13252
  • some text
Re:Subir una imagen a una carpeta del servidor con PHP
« Respuesta #9 : mayo 04, 2010, 10:40:48 am »
yo hice un codigo que lo que hace es que lo sube a un temporal y luego lo manda por ftp a otro host.
(esto porque asi me lo pidieron)

Chequea extension y tamaño del archivo.

Código: [Seleccionar]
$local_dir = "TU_DIRECTORIO_DE_ARCHIVOS";

// check if file was submited

if($_FILES['file']['name'] != ''){



// Configuration - Your Options

      $allowed_filetypes = array('.doc','.pdf','.docx'); // These will be the types of file that will pass the validation.

      $max_filesize = 1048576; // Maximum filesize in BYTES (currently 1MB).

      //$upload_path = './upload/'; // The place the files will be uploaded to (currently a 'upload' directory).

 

   $filename = $_FILES['file']['name']; // Get the name of the file (including file extension).

   $ext = strrchr($filename,'.'); // Get the extension from the filename.

   // creating new file name

$new_file = 'resume_'.trimstring($first_name).'_'.trimstring($first_last_name).'_'.rand().$ext;



//**********************************************************

//************** SEND FILE TO FTP***************************

//**********************************************************





 $error_var = false;

   // Check if the filetype is allowed, if not DIE and inform the user.

   if(!in_array($ext,$allowed_filetypes)){

$error_msg = 'The file you attempted to upload is not allowed';

$error_var = true;

   }



// Now check the filesize, if it is too large then DIE and inform the user.

   if(filesize($_FILES['file']['tmp_name']) > $max_filesize){

      $error_msg = 'The file you attempted to upload is too large.<br>Allowed file size < 1MB';

  $error_var = true;

   }



if(!$error_var){

// File is ok to upload

// get FTP access parameters

$host = $ftp_host;

$user = $ftp_user;

$pass = $ftp_pass;

$destDir = $ftp_dir;

$workDir = $local_dir; // define this as per local system



// get temporary file name for the uploaded file

$tmpName = basename($_FILES['file']['tmp_name']);



// copy uploaded file into current directory

//move_uploaded_file($_FILES['file']['tmp_name'], $workDir."/".$new_file)

// or die("Cannot move uploaded file to working directory");

move_uploaded_file($_FILES['file']['tmp_name'], $workDir."/".$new_file)
or die("Cannot move uploaded file to working directory");
N/A