Comunidad de diseño web y desarrollo en internet online

Problemas con el objeto FileReference en el servidor

Citar            
MensajeEscrito el 16 Dic 2009 01:53 pm
Hola,
Tengo una aplicación en Flex, mediante la cual el usuario puede cargar un archivo de imagen al servidor. La aplicación funciona de forma correcta localmente, sin embargo cuando trato de ejecutar la aplicación en el servidor, me produce el siguiente error:

Código :

Error #2044: IOErrorEvent no controlado: text=Error #2038: Error de E/S de archivo.
   at UploadFile()[C:\AppServ\www\subirarchivos\src\UploadFile.mxml:28]
   at mx.core::Container/createComponentFromDescriptor()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:3571]
   at mx.core::Container/createComponentsFromDescriptors()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:3485]
   at mx.core::Container/createChildren()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:2587]
   at mx.core::UIComponent/initialize()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5262]
   at mx.core::Container/initialize()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:2524]
   at mx.core::Application/initialize()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Application.as:847]
   at upload/initialize()[C:\AppServ\www\subirarchivos\src\upload.mxml:0]
   at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:1625]
   at mx.managers::SystemManager/initializeTopLevelWindow()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:2482]
   at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:2330]


Este error me lleva directamente a la linea 28 del componente UploadFile.mxml en donde se crea e inicializa la variable FileReference:

Código :

 private var fileref:FileReference = new FileReference();


Ahora, el objeto FileReference primero me funciona correctamente cuanto se trata de localizar un archivo en el ordenador del usuario

Código :

 fileref.browse();


Sin embargo cuando trato de cargar dicho archivo, recien es cuando me genera el error que les puse arriba.

¿Alguien tiene una idea de cual es el problema, please?

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2009 01:56 pm
El IOError se da usualmente cuando no encuentra el archivo o no tiene permisos de lectura, chequea que no haya problema de rutas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Dic 2009 02:16 pm
Gracias solisarg por responder. Pero, ¿con permisos de lectura te refieres al permiso del servidor? El que tengo es Linux y he buscado por ahi me encontre con este post:

upload-de-archivos-con-php

en el que me dicen que para asignarle permisos a la carpeta en la que trato de subir los archivos puedo utilizar un cliente FTP, en mi caso yo he utilzado el Filezilla y he seguido el procedimiento y al parecer me sigue generando el mismo error.

En cuanto a problemas de rutas, me he fijado que el problema que me genera me indica la ubicación absoluta de mi componente, lo cual no entiendo porque ocurre esto, puesto que yo utilizo rutas relativas siempre

Código :

C:\AppServ\www\subirarchivos\src\UploadFile.mxml:28


¿Hay alguna otra forma de asignarle permisos de lectura y escritura a un servidor de linux?

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2009 02:20 pm
Posiblemente la ruta al script del upload esté mal

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Dic 2009 02:56 pm
Muchas gracias por responder, Jorge.
Teniendo en cuenta tu sugerencia asigne una ruta absoluta que tiene en el servidor al archivo php que se encarga de realizar las cargas de imagenes, y al probarlo localmente me generó el mismo, error... teniendo en cuenta que localmente me funcionaba muy bien, ejecute el archivo uploads.php que tiene el código que se encarga de la subida de archivos y me generó el siguiente error:

Código :

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
HTTPD Server Server at www.crea.com.pe Port 80


Ahora mi código php es el siguiente:

Código PHP :

<?php
if(isset($dir) && $dir!=""){
$uploadFile = $dir.$_FILES['Filedata']['name'];
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
}
?>

Me parece que este código no es el problema, de tal modo que seguire buscando la solución por el lado del servidor :wink:

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2009 02:58 pm
¿Y cual es el valor de $dir? Porque así como lo tienes jamás se ejecutará

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Dic 2009 03:15 pm
La función que activa la carga de imagenes es:

Código ActionScript :

public function uploadFile():void{
            var request:URLRequest = new URLRequest();
            var variables:URLVariables = new URLVariables();
            variables.dir = _dirname;
            for(var d in _params){
                variables[d] = _params[d]
            }
            request.data = variables;
            request.method = URLRequestMethod.GET;
            request.url = _upload_url;
            fileref.upload(request);
            
        }


y _dirname recibe un valor en

Código ActionScript :

 public function set dirname(_str:String):void{
            _dirname = _str
        }


y esta función es inicializada desde en la creación del componente en mi aplicación principal

Código :

<componentes:UploadFile 
         id="up"
         dirname="uploads/" 
         uploadURL="http://www.crea.com.pe/proyectos/subirimagen/upload.php"
          fileUploaded="uploadedListener();"
          fileSelected="selectedListener();"
       top="0" left="0"/>


Es decir que dirname es el nombre de la carpeta donde se deben de cargar las imagenes

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2009 03:17 pm
Pero a menos que el servidor tenga activadas las variables globales (desde PHP 4.1 ya no las tiene) el parámetro sería

$_GET['dir']

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Dic 2009 03:30 pm
Cielos, tienes razón es que soy amateur en todo esto.

El código finalmente me quedaría así:

Código PHP :

<?php
if(isset($_GET['dir']) && $_GET['dir']!=""){
$uploadFile = $_GET['dir'].$_FILES['Filedata']['name'];
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
}

?>


y aún así mi servidor me sigue devolviendo el 500 Internal Server Error :(... me temo que lo que sucede es que no me quiere reconocer el archivo que tiene este código y por lo tanto debo seguir buscando soluciones

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2009 03:33 pm
Con solo ejecutarlo no debería dar error, el código 500 quiere decir que tiene los errores "ocultos" (es decir, cualquier error te dará 500) y por lo tanto hacer un debug si no te habilitan los mensajes de error será bastante dificil. De todas formas, si lo cargas en tu servidor local y no muestra error, con esas tres líneas tan simples tampoco debería darlo en remoto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Dic 2009 03:46 pm
Es cierto, no debería :cry:

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2009 04:10 pm
Jorge, muchas gracias por tu tiempo e interés me ayudaste a comprender un poco más sobre los errores de FLEX y PHP :)

El problema, como te decía, era mi servidor y lo he comprobado porque he subido mi aplicación a otro servidor y funcionó correctamente :lol: cómo debería de ser.

Por escenariovirtual

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Jun 2010 12:20 pm
Hola, estoy intentando subir una imagen mediante flashReference y ASP, a mi me da un error HTTP 500, alguien sabe cual es el problema? por lo que he visto en internet un error 500 es debido a "algo" en el servidor, pero no consigo saber que.
Les dejo las trazas que me va sacando flash al iniciar la subida:

onOpen: imagen.png
onProgress with bytesLoaded: 13060 bytesTotal: 13060 de imagen.png
onHTTPError: 500 imagen.png

Muchas gracias por su tiempo
Pimager

Por Pimager

38 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Jun 2010 11:12 am
Hola, lo he resuelto usando un archivo .Net, se lo dejo por si a alguien le puede servir:

Código :

<%@ Page Language="C#" %>

<script runat="server">
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.Request.Files.Count > 0)
        {
            HttpPostedFile uploadFile = this.Request.Files[0];
            string extension = System.IO.Path.GetExtension(uploadFile.FileName).ToLower();
            if (extension == ".png" || extension == ".jpg" || extension == ".jpeg" || extension == ".gif")
            {
                uploadFile.SaveAs(Server.MapPath("~") + "../logos/" + uploadFile.FileName);
            }
        }
    }

</script>


La parte de Flash es la típica de la clase FileReference

Por Pimager

38 de clabLevel



 

chrome

 

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