Foros del Web » Creando para Internet » Flash y Actionscript »

como borrar archivo con FileReference, DataGrid y php

Estas en el tema de como borrar archivo con FileReference, DataGrid y php en el foro de Flash y Actionscript en Foros del Web. Bueno mi codigo quedo asi, hasta el momento en el que le quiero agregar una funcion mas, la de mandar un nombre de archivo extraido ...
  #1 (permalink)  
Antiguo 25/10/2007, 13:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 16
como borrar archivo con FileReference, DataGrid y php

Bueno mi codigo quedo asi, hasta el momento en el que le quiero agregar una funcion mas, la de mandar un nombre de archivo extraido de una DataGird donde es alimentado de informacion con un php...que hace una lista...

Quiero con un boton "borrar" mandar el archivo seleccionado del DataGrid, para que el php lo borre del servidor...

Como hago esto???

Mi codigo es asi:

Cita:
import flash.net.FileReference;
var fileUpload:FileReference = new FileReference();
var path:String = "http://www.web.com/files"
var escucha:Object = {};
var fileTypes:Array;
var getFile:String;
function init() {
System.security.allowDomain(path);
load_mc._visible = false;
fileTypes = [{description:"Archivos de Imagen", extension:"*.jpg;*.gif;*jpeg;*.png;*.JPG;*.JPEG", macType:"JPEG;jp2_;GIFF"}];
upload_btn.label = "Upload File";
down_btn.label = "Download File";
upload_btn.addEventListener("click", doUpload);
down_btn.addEventListener("click", doDownload);
fileUpload.addListener(escucha);
escucha.onSelect = doSelect;
escucha.onComplete = doComplete;
escucha.onCancel = doCancel;
escucha.onProgress = doProgress;
data_mc.addEventListener("change", setDownload);
makeList();
}
function doComplete() {
load_mc.barra_mc._visible = false;
load_mc.label_txt.text = "Tranferencia Completa";
makeList();
}
function doProgress(archivo:FileReference, bLoaded:Number, bTotal:Number) {
var porcentaje = Math.round((bLoaded*100)/bTotal);
load_mc.barra_mc._visible = true;
load_mc.label_txt.text = porcentaje+"% del archivo "+archivo.name;
load_mc.barra_mc.gotoAndStop(porcentaje);
}
function doCancel() {
trace("El Usuario Cancelo");
}
function doSelect(archivo:FileReference) {
load_mc._visible = true;
//load_mc.barra_mc._xscale = 0;
fileUpload.upload(path+"/uploadFile.php");
}
function doDownload() {
if (getFile != undefined) {
fileUpload.download(path+"/uploads/"+getFile);
}
}
function doUpload(event) {
fileUpload.browse(fileTypes);
}
function setDownload(c:MovieClip) {
getFile = c.target.selectedItem.Nombre;
}
function makeList() {
data_mc.removeAll();
var list_xml:XML = new XML();
list_xml.ignoreWhite = true;
list_xml.load(path+"/lista.php");
list_xml.onLoad = function() {
var nodos = this.firstChild.childNodes;
for (var a in nodos) {
var size:Number = Math.ceil((nodos[a].attributes.tamanio/1024));
data_mc.addItem({Nombre:nodos[a].attributes.name, Tamaño:size+" Kb"});
}
};
}
init();
Y el php es asi:

Cita:
<?
print "fichero_borrado=".( ( unlink ( $_POST ['fichero'] ) ) ? "si" : "no" ) . "&fin=si";
?>
Ya esta funcionando el UPLOAD y DOWNLOAD aqui...pero el boton borrar todavia no...
  #2 (permalink)  
Antiguo 26/10/2007, 05:34
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: como borrar archivo con FileReference, DataGrid y php

Probablemente lo que sucede es que la función unlink tiene los permisos por defecto limitados.

Lo que puedes hacer es crear en tu servidor una cuenta de ftp con acceso restringido a una carpeta determinada, por cuestiones de seguridad, y utilizar las funciones ftp de php para borrar el archivo.

Código PHP:
<?php

$error
=0;
$servidor_ftp    "ftp.tuservidor.com";
$usuario_ftp     "usuarioFTP";
$contrasenya_ftp "passwordFTP";
$id_con = @ftp_connect($servidor_ftp) or die("error=1&fin=si");
if (!@
ftp_login($id_con$usuario_ftp$contrasenya_ftp)) 
{
    
$error=2;
}
$archivo = ($_POST['ficher']!="") ? ("public_html/".$_POST['ficher']) : "";
if (!@
ftp_delete($id_con$archivo)) 
{
    
$error=3;
}
ftp_close($id_con);
echo 
"error=".$error."&fin=si";

?>
Este script lo que hace es borrar el archivo que se pase como parametro ficher por post desde flash o desde dónde sea. si no se puede conectar al ftp devuelve error 1, si no se puede conectar usuario error 2, y si no se puede borrar fichero error 3; si todo va bien devuelve error=0

No me planteo ningún tipo de seguridad, eso ya quedaría como tema aparte en el código php y en flash.

Se podría por ejemplo utilizar sesiones de php para autenticar usuario desde flash en una primera instancia, y utilizar el identificador de sesion y las datos de usuario autenticado posteriormente a cada petición desde flash a un código php cuyas acciones sean potencialmente peligrosas como borrar un fichero.

He modificado tb el lista.php porque devolvía directorios y para que devuelve una primera etiqueta con el número de ficheros
Código PHP:
<?php 

header
("Content-type: text/xml\n\n");
echo 
'<?xml version="1.0" encoding="iso-8859-1"?>' "\n";

$No=array(".","..","lista.php","uploadFile.php");
$dir="foros/";
$fp=opendir($dir); 
$cabeza="<files>";
$numero=0;
while (
false!==($file=readdir($fp)))

    if ((!
in_array($file,$No))&&(is_readable($dir.$file)) && !is_dir($dir.$file))
    {
        
$numero++;
        
$salida.="<file name='".utf8_encode($file)."' tamanio='".filesize($dir.$file)."' />"
    }


print(
$cabeza."<entradas numero='".$numero."' />".$salida."</files>");
closedir($fp); 

?>
Y respecto al código flash, yo lo he probado por mi parte y partiendo de cero y me funciona,con un datagrid y un botón(myDataGrid y bBorrar) y el código(sólo para borrar y cargar la lista) es este:
Código PHP:
var myDataGrid:mx.controls.DataGrid;

myDataGrid.addColumn("Fichero");
myDataGrid.addColumn("Tamano");

myDataGrid.setSize(300300);
myDataGrid.getColumnAt(0).width 150;

var 
listener_obj:Object = new Object();

listener_obj.change = function(eventObject){
    
bBorrar.enabled=(myDataGrid.selectedItem.Fichero!=undefined);
    
}
myDataGrid.addEventListener("change"listener_obj)

enviar=new LoadVars();
datosLista = new XML();
datosBorrar= new LoadVars();

enviar.sendAndLoad("lista.php",datosLista,"POST");

bBorrar.enabled=false;
bBorrar.onRelease=function()
{
    
enviar.ficher="foros/"+myDataGrid.selectedItem.Fichero;
    
enviar.sendAndLoad("borrar.php",datosBorrar,"POST");
}

datosBorrar.onLoad=function()
{
    
trace(datosBorrar.error);

        
// actualizar lista si borrado exito
        
if(datosBorrar.error==0)
    
enviar.sendAndLoad("lista.php",datosLista,"POST");
}

datosLista.onLoad = function()
{
    
trace(datosLista.childNodes[1].childNodes[2]);
    
myDataGrid.removeAll();
    
numero=datosLista.childNodes[1].childNodes[0].attributes.numero;
    for(
l=1;l<=numero;l++)
    {

        
ficher=datosLista.childNodes[1].childNodes[l].attributes.name;
        
taman=datosLista.childNodes[1].childNodes[l].attributes.tamanio;
        
trace(ficher);
        var 
item_obj:Object = {Fichero:ficherTamano:taman};
        
myDataGrid.addItem(item_obj);
    }

A mi me ha funcionado.

Por otra parte creo que lo lógico sería usar las funciones de ftp de php para todo y así la ruta inicial dependiera de los permisos ftp, enviar, descargar, etc... todo dependería de los permisos de usuario ftp y por tanto no tendrías que definir un directorio principal ni nada.

Pero bueno, todo depende de como te hayas planteado la cosa...

http://es2.php.net/manual/es/ref.ftp.php

En esa dirección están todos los 'métodos' que implementa la 'clase' ftp de php.

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 26/10/2007 a las 06:58
  #3 (permalink)  
Antiguo 26/10/2007, 11:39
 
Fecha de Ingreso: marzo-2007
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 16
Re: como borrar archivo con FileReference, DataGrid y php

A la pucha que se agrego codigo...Alto nivel... Lo probe agregando el codigo, pero me tira undefined repetidamente y salta la proteccion de flash para detener el script...

Aca dejo el .fla
Aca dejo el borrar.php
Aca dejo el list.php
Aca dejo el uploadFile.php

No se que pasa...

Cree un acceso a la carpeta "public_html/files" desde FTP, eso lo tomo como seguridad, pero supongo que ubiese funcionado igual...

Y en el caso de borrar.php en public_html/ no puse las sub-carpetas, ya que pienso que en fichero va el path al archivo files/uploads/archivo_a_borrar

no se q hago mal , en el .fla esta mi codigo, bye...
y mas que gracias.

Última edición por eybel; 26/10/2007 a las 11:58
  #4 (permalink)  
Antiguo 26/10/2007, 14:56
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: como borrar archivo con FileReference, DataGrid y php

Hola,

de momento cuando mandas la ruta del fichero al php tienes que empezar con "public_html/" y luego seguir o sea ""public_html/files/uploads/archivo_a_borrar"

Luego tambiçen y aparte,puedes crear un fichero php llamarlo por ejempli info.php y poner el siguiente cçodigo para comprobar que las funciones de ftp esten disponibles:
Código PHP:
<?php
echo phpinfo();
?>

Y mirar que las opciones de ftp ponga ftp
FTP support enabled

Salu2
__________________
[+]
[+]

Última edición por yoseman; 26/10/2007 a las 15:09
  #5 (permalink)  
Antiguo 26/10/2007, 19:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 782
Antigüedad: 17 años, 8 meses
Puntos: 16
Re: como borrar archivo con FileReference, DataGrid y php

Yoseman, esta bien eso entonces, me habia equivocado yo.Lo pense, pero bueno lo deje como estaba.Ahora ya hice el cambio...

Igualmente a todo esto, cuando apreto ctrol + enter en flash, se tilda la pc, hasta que sale la proteccion de flash y me pregunta de cortar el script...Sale en la ventana de Salida, muchas veces "undefined".

Bueno ahi deje los archivos por si los podes revisar...
Voy a seguir investigando sobre esta programacion para aprenderlo, ya que realmente es otro nivel para mi, muchas gracias...

Última edición por eybel; 26/10/2007 a las 20:00
  #6 (permalink)  
Antiguo 01/04/2008, 11:13
Avatar de Alesius  
Fecha de Ingreso: marzo-2008
Mensajes: 87
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: como borrar archivo con FileReference, DataGrid y php

Cita:
Iniciado por eybel Ver Mensaje
Yoseman, esta bien eso entonces, me habia equivocado yo.Lo pense, pero bueno lo deje como estaba.Ahora ya hice el cambio...

Igualmente a todo esto, cuando apreto ctrol + enter en flash, se tilda la pc, hasta que sale la proteccion de flash y me pregunta de cortar el script...Sale en la ventana de Salida, muchas veces "undefined".

Bueno ahi deje los archivos por si los podes revisar...
Voy a seguir investigando sobre esta programacion para aprenderlo, ya que realmente es otro nivel para mi, muchas gracias...

Hola eybel, a mi me interesaria, si no es molestia para vos que me postees el archivo upploadFile.php.

Gracias
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 22:44.