Spanish [SOLUCIONADO]subir fotografia.

mvera

Active Member
Licensed User
Longtime User
Hola en mi proyecto llegue a la parte en donde quiero subir una foto lo hago asi:

B4X:
Sub subir_fotografia
    Dim query,fecha,hora,tipo,miniruta,q2 As String
        miniruta=""&ruta_s&"sub/upload.php"
        subir_foto.PostFile(miniruta, File.DirRootExternal & "/" , "1.jpg")
End Sub


php:

B4X:
 <?php
 
 
    $extensions = array('.jpg', '.jpeg','.JPG', '.JPEG');
    $valid_extensions = '.jpg, .jpeg';
    $extension = strrchr($_FILES['uploaded_file']['name'], '.');

    if (!in_array($extension, $extensions))
    {
    $rawdata[$i]['respuesta'] ="Fallo_EXTENCION";
    }
 
 
 
 
    $file_path =""; // "uploads/";
    $i=0;
   
    $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
        $rawdata[$i]['respuesta'] ="upload";
    } else{
        $rawdata[$i]['respuesta'] ="Fallo";
    }
   
       $myArray =$rawdata;
        echo json_encode($myArray);
?>



Debería ser suficiente para subir el archivo ?
Actualmente lo ejecuto pero no sube la foto.

gracias.
 

JCO

Active Member
Licensed User
Longtime User
Hola,

supongo que en la variable miruta, has quitado para el post la dirección completa del servidor y que el subir_foto es del tipo HttpJob y está inicializado.
Si es así, el código te debería funcionar correctamente. El problema venga quizás de que el tamaño del archivo que subes sea mayor que el límite establecido en el servidor. En ese caso hay que modificar el valor en el servidor web.

Saludos,
Julio
 

rscheel

Well-Known Member
Licensed User
Longtime User
Por que no subes la imagen por ftp es mas sencillo y si, si no mal recuerdo para subirla por php es mas complicado que lo que estas haciendo, ya que necesitas enviar la imagen por partes al php y en el php volverla a unir y guardarla en el servidor.
 

Carlos marin

Active Member
Licensed User
Longtime User
Hola estoy de acuerdo con rscheel seria algo asi

B4X:
Sub Activity_Create(FirstTime As Boolean)

ftp.Initialize("FTP", "ftp.mihost", 21, "mi_usuario", "mi_contraseña")
...
ftp.UploadFile(File.DirAssets, "mi_foto.jpg",False,"archivo_destino_ en_ serdivor" )
end sub
Ten en cuenta que si quieres crear un directorio nuevo para cada archivo que subas lo haces con este comando
B4X:
ftp.SendCommand("MKD","nombre_del_directorio_que_voy_a_crear")
Aqui muestra el progreso de subida:
B4X:
Sub FTP_UploadProgress (ServerPath As String, TotalUploaded As Long, Total As Long)
        Dim a As String
        a = "Uploaded " & Round(TotalUploaded / 1000) & "KB"
        If Total > 0 Then a = a & " out of " & Round(Total / 1000) & "KB"
        Log(a)
       toasmensajeshow("Subiendo Archivos. Por Favor Espere. " & "Archivo: " & Round(TotalUploaded / 1000 & "KB", false)
End Sub

Aqui cuando finaliza la subida:
B4X:
Sub FTP_UploadCompleted (ServerPath As String, Success As Boolean)
        Log(ServerPath & ", Success=" & Success)
        If Success = False Then
          Log(LastException.Message)
        else
          ToastMessageShow("Archivo subido con exito!", False)
        end if
End Sub
 

mvera

Active Member
Licensed User
Longtime User
primero agradezco las recomendaciones y efectivamente es mas simple por el ftp , pero tengo un temor natural ya que siempre es factible que descompilen mi aplicación exponiendo todo mi servidor, considerando esto prefiero hacerlo via php , sin considerar que necesito manipular la imagen en tamaño.
 

mvera

Active Member
Licensed User
Longtime User
ahora siguiendo con el tema.
¿alguien ha subido un archivo , via php/asp etc?

efectivamente los parametros estan bien , pero es como si faltara algo

subir_foto.PostFile(miniruta, File.DirRootExternal & "/" , "1.jpg")

-La ruta al php responde , ya que veo la resposta por el LOG
-La ruta del archivo segun veo tambien esta bien.

pero en el php al hacer echo "FOTO: ".$_FILES['uploaded_file']['name']; , veo en blanco.


ideas?
 

rscheel

Well-Known Member
Licensed User
Longtime User
ahora siguiendo con el tema.
¿alguien ha subido un archivo , via php/asp etc?

efectivamente los parametros estan bien , pero es como si faltara algo

subir_foto.PostFile(miniruta, File.DirRootExternal & "/" , "1.jpg")

-La ruta al php responde , ya que veo la resposta por el LOG
-La ruta del archivo segun veo tambien esta bien.

pero en el php al hacer echo "FOTO: ".$_FILES['uploaded_file']['name']; , veo en blanco.


ideas?

Estimado no es tan simple, como le comente antes no basta enviar la foto, busque ejemplos en el foro en ingles hay uno que use hace un tiempo atras de @DonManfred

Saludos.
 

Carlos marin

Active Member
Licensed User
Longtime User
mvera, pienso que aun puedes utilizar el ftp lo que yo voy hacer ya que me dejaste con la duda en la cabeza es cargar las variables desde el servidor. asi si descompilam mi app no tienen forma de ver nada. por que no pruebas tu lo mismo???

ejemplo. cuando valla a subir la foto hago una consulta en el server de la ruta, el usuario y el pass y los utilizo aqui:

B4X:
ftp.Initialize("FTP", variableA, 21, variableB, variableC)

en el peor de los casos si descompilan nuestra app no van a poder ver nada ps las variables las cargas en memoria, asi aprovechas la velocidad y facilidad del ftp. que tal???
 
Top