Autoit en español
Aplicaciones con Autoit - Juan Antonio Villalpando
-- Tutorial de iniciación a Autoit --
Volver al índice del tutorial
____________________________
72.- Elegir un archivo del ordenador y subirlo a un servidor web de internet.
- Pulsamos un botón y sale una ventana para elegir archivo. Elegimos uno.
- Pulsamos otro botón y ese archivo sube a un hosting remoto.
- La subida de archivo está basada y adaptada de este envío:
https://www.autoitscript.com/forum/topic/187577-cant-get-http-upload-for-pictures-working/#comment-1347100
- Necesita la librería #include <WinHttp.au3> de dragana-r, la puedes obtener de:
https://github.com/dragana-r/autoit-winhttp/releases
- También la puedes bajar de aquí: WinHttp.au3
- Bajas ese archivo WinHttp.au3 y lo copias en la carpeta "Include" de donde tengas instalado el AutoIt.
_______________________________________________________
1.- Necesitamos un hosting.
- Lee este tutorial y créate una cuenta gratuita en Hostinger.
- Además aprende a subir archivos a Hostinger mediante el cliente de FTP Mozilla.
317.- Hosting gratuito Hostinger.
_____________________________________________________
2.- Archivo PHP que subiremos a nuestro hosting.
sube_archivo_autoit.php
|
<?
if($_GET['action'] == 'subelo'){
$donde_se_guardara = "subidos/";
// Modificado por Juan A. Villalpando - KIO4.COM
$donde_se_guardara = $donde_se_guardara.basename( $_FILES['sube_archivo']['name']);
if(move_uploaded_file($_FILES['sube_archivo']['tmp_name'], $donde_se_guardara)) {
echo "El archivo ".basename( $_FILES['sube_archivo']['name']).
" ha subido.";
} else{
echo "Error en la subida del archivo.";
}
}
?>
|
- Este PHP será el encargado de tomar la información del archvio y guardarlo en el servidor remoto.
- Suponemos que en el servidor remoto tenemos un subidirectorio en "subidos/"
- Si queremos subirlo al mismo directorio donde está el PHP, ponemos: $donde_se_guardara = "";
- Mediante el cliente FTP Mozilla puedes crear ese directorio y ponerle todos los "Permisos de archivo..."
_____________________________________________________
3.- Aplicación en AutoIt para enviar un archivo y guardarlo en un servidor remoto.
Código para el AutoIt
|
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinHttp.au3> ; Incluir esta librería.
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Elegir y subir archivo - Juan A. Villalpando", 435, 338, 192, 132)
$Button1 = GUICtrlCreateButton("Pulsa para elegir un archivo.", 56, 16, 321, 41)
$Label1 = GUICtrlCreateLabel("Label1", 32, 88, 373, 36)
$Button2 = GUICtrlCreateButton("Pulsa para subir ese archivo al servidor web.", 56, 152, 321, 41)
; Juan A. Villalpando - KIO4.COM
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; ELIGE el ARCHIVO
Case $msg=$Button1
$archivo_elegido = FileOpenDialog("Elige", @WindowsDir & "\", "Imagenes (*.jpg;*.bmp)|Videos (*.avi;*.mpg))", $FD_FILEMUSTEXIST)
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "Ningún archivo(s) seleccionado.")
FileChangeDir(@DocumentsCommonDir) ; Va a la carpeta de Documentos.
Else
FileChangeDir(@DocumentsCommonDir) ; Va a la carpeta de Documentos.
$archivo_elegido = StringReplace($archivo_elegido, "|", @CRLF)
GUICtrlSetData($Label1,$archivo_elegido) ; Pone la dirección del archivo en Label1
EndIf
; SUBE el ARCHIVO
Case $msg=$Button2
$sube_por_php = "http://kio4.esy.es/sube_archivo_autoit.php?action=subelo" ; PHP que tomará el archivo y lo guardará.
$Formulario = _
''
$Abrir = _WinHttpOpen()
$envio = _WinHttpSimpleFormFill($Formulario, $Abrir, Default, "name:sube_archivo", $archivo_elegido) ; Rellena el Formulario
; Vuelta de información.
If @error Then
MsgBox(4096, "Error.", "Número de error = " & @error, 3)
Else
Beep(1000,400)
MsgBox(0, "Información.", "Recibido:" & @CRLF & $envio & @CRLF, 3)
EndIf
_WinHttpCloseHandle($Formulario)
_WinHttpCloseHandle($Abrir)
EndSelect
Wend
Exit
|
_____________________________________________________
- Comentarios.
- Si queremos filtrar otros tipo de archivos ponemos:
"Imagenes (*.jpg;*.bmp)|Videos (*.avi;*.mpg) |Texto (*.txt;*.doc;*.docx)"
- En el código, cuando la línea es muy larga, se puede escribir en distintos renglones indicándolos mediante la línea de guión bajo _
$Formulario = _
'<form action="' & $sube_por_php & '" method="post" enctype="multipart/form-data">' & _
' <input type="file" name="sube_archivo"/>' & _
'</form>'
- Aquí llama al archivo PHP que se encuentra en el servidor web.
$sube_por_php = "http://kio4.esy.es/sube_archivo_autoit.php?action=subelo" ; PHP que tomará el archivo y lo guardará.
- El PHP devuelve una respuesta mediante echo, (también se puede devolver mediante print).
- El AutoIt recoje esa información mediante $envio.
_____________________________________________________
- Propuesta.
- Busca como sería la elección de varios archivos en el FileOpenDialog, MULTISELECT
_______________________________________________
_________________
|