Comunidad de diseño web y desarrollo en internet online

restricción del browse

Citar            
MensajeEscrito el 26 Mar 2012 05:09 pm
saludos, mi problema es muy simple supongo yo pero no se como solucionarlo. Tengo una aplicación que busca archivos del servidor y los descarga, pero utilizo la función del "browse" lo que quiero es saber si puedo restringir el acceso ya que cuando abro el browse puedo navegar por otras carpetas y se ve la la demás información aunque no se pueda descargar pero eso me conlleva a problemas de seguridad, les dejo el código para que vean como funciona.

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
       creationComplete="init()" >
   <fx:Script>
      <![CDATA[
         
         
         import flash.net.URLRequest;
         
         import mx.controls.Alert;
         import mx.rpc.events.FaultEvent;
         import mx.rpc.events.ResultEvent;
         //import flash.net.FileReference;
         private var imagesFilter:FileFilter = new FileFilter("Images(*.jpg; *.gif; *.png)", "*.jpg;*.gif;*.png");
         private var photoShop:FileFilter = new FileFilter("Archivos Photoshop", "*.psd");
         private var documents:FileFilter = new FileFilter("Documentos(*.docx; *.xlsx; *.ppt; *.txt)","*.docx; *.xlsx; *.ppt; *.txt");
         private var comprimidos:FileFilter = new FileFilter("Comprimidos(*.rar; *.zip)","*.rar; *.zip");
         private var todos:FileFilter = new FileFilter("Todos los Archivos(*.*)","*.*");
         private var fileref:FileReference = new FileReference();
         
         
          /**  aqui busco los archivos de la carpeta  */
         private function buscar():void
         {
            fileref.browse([imagesFilter,photoShop,documents,comprimidos,todos]);
         }
         
         
         
         private function seleccionar(event:Event):void 
         {
            startUpload.enabled = true;
            descText.text = fileref.name;
         }
         
         
         private function init():void{
            startUpload.enabled = true;
            fileref.addEventListener(Event.SELECT, seleccionar);
            //      fileref.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            //   fileref.addEventListener(Event.COMPLETE, completeHandler);
         }   
         
         
         /** mando llamar la url donde esta mi clase en php para realizar la descarga*/
         protected function startUpload_clickHandler(event:MouseEvent):void
         {
            // mirem.Consulta_Empleado_Kardez(TxtRPE.text.toString());
            
            //descText.text=url.toString();
            
            var url :URLRequest = new URLRequest("http://localhost/flex/clasesp1/Download/src/amfphp/services/Clases/descarga.php?file=" + descText.text);                         
            navigateToURL(url, "_blank")
            descText.text="";
            
         }
         

   
      
         
         
         
         
      ]]>
   </fx:Script>
   
   
   
   <fx:Declarations>
      <!-- Place non-visual elements (e.g., services, value objects) here -->
   </fx:Declarations>
   <s:Panel x="75" y="57" width="250" height="200" title="Descargar Archivo Control de Gestion">
      <s:TextInput x="28" y="55" id="descText"/>
      <s:Button x="144" y="55" label="buscar" width="72" id="browseUpload" click="buscar()"/>
      <s:Button x="91" y="113" label="Descargar" click="startUpload_clickHandler(event)" id="startUpload"/>
      <!-- panel de descargas-->
   
      
   </s:Panel>
</s:Group>




aquí les dejo también mi archivo de php por si quieren realizar la prueba:


Código PHP :

<?php
//require_once 'downL.php';

// File: download.php

//$file="prueba_excel.xls";
 

if (!isset($_GET['file']) || empty($_GET['file'])) {
    exit();
}
//$_FILES['Filedata']['prueba_excel.xls']
//file ='C:\xampp\htdocs\flex\clasesp1\nuevoflex\base_datos\Download-debug\images\0.jpg';
$root = "C:/xampp/htdocs/flex/clasesp1/nuevoflex/base_datos/menu desplegable-debug/images/";
$file = basename($_GET['file']);
$path = $root.$file;

$type = '';
 
if (is_file($path)) {
    $size = filesize($path);
    if (function_exists('mime_content_type')) {
        $type = mime_content_type($path);
    } else if (function_exists('finfo_file')) {
        $info = finfo_open(FILEINFO_MIME);
        $type = finfo_file($info, $path);
        finfo_close($info); 
    }
    if ($type == '') {
        $type = "application/force-download";
    }
    // Set Headers
    header("Content-Type: $type");
    header("Content-Disposition: attachment; filename=$file");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: " . $size);
    // Download File
    readfile($path);
} else {
    die("Archivo no existe !!");
}

?>

Por lalz_tc

33 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Mar 2012 05:25 pm
No, Filereference.browse funciona a nivel del cliente, no del servidor. La fconfusión es porque estás probando todo en localhost, entonces ambos coinciden, pero el browse lo hace en tu máquina, no en el servidor. Lo verás claramente si subes todo a un servidor real

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Mar 2012 06:09 pm
gracias por tu inmediata respuesta, entonces tendré que buscar otra forma para poder descargar los archivos. saludos

Por lalz_tc

33 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Mar 2012 06:11 pm
Si lo que quieres es mirar los arhivos del servidor, entonces si, necesitas que PHP lea y te pase la info

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Mar 2012 07:01 pm
eso es exactamente lo que necesito, ¿sabes como podría hacerlo?

Por lalz_tc

33 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Mar 2012 07:03 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Mar 2012 07:06 pm
ok hay lo checo muchas gracias :)

Por lalz_tc

33 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.