Quiero que cuando un usuario cargue un archivo, este archivo debe enviarse al servidor con FTP sin presionar un botón o enviar un formulario. Intento hacer eso pero no funciona.
En primer lugar, creé una función con intervalos de tiempo, que verifica si la entrada del archivo está vacía o no. Si no está vacío, debe enviar el archivo al servidor.
var file = "/uploads/" + {{ api_id }}esta debería ser la dirección del archivo en el servidor.
¿Cómo puedo hacer eso o dónde está mi error?
<input type="file" class="form-control-file" id="exampleFormControlFile1" name="bankStat1"> <script> setInterval(displayHello, 1000); function displayHello() { var is_File = false if (document.getElementById("exampleFormControlFile1").files.length >= 1){ is_File = true var file = "/uploads/" + {{ api_id }} var ftp = new FtpConnection("ftp://myftp/") ; ftp.login("myuser", "mypass"); ftp.cd("uploads") ftp.put(file,document.getElementById("exampleFormControlFile1").files[0]) ; ftp.close() ; file.close() ; } console.log(is_File) } </script>No creo que haya una buena solución para cargar archivos directamente desde javascript del lado del cliente a un servidor a través de FTP. El problema es que sus credenciales de FTP deben estar en algún lugar donde el javascript pueda acceder a ellas, pero posteriormente esto significa que cualquier persona con acceso a ese javascript puede simplemente usar su servidor FTP como le plazca (una situación que es propicia para el abuso).
Si simplemente está intentando cargar archivos en el servidor, HTML/HTTP proporciona la funcionalidad de carga de archivos en el lado del cliente y Django tienela capacidad de hacer cosas con esos archivos. Si tiene un servidor al que solo se puede acceder a través de FTP, le recomiendo que cargue el archivo en su servidor Django y luego use una biblioteca FTP de Python para reenviarlo desde allí. (¡También recomiendo validar cuidadosamente los archivos que los usuarios han cargado, ya que abundan los problemas de seguridad al permitir que los archivos proporcionados por el cliente vivan en su servidor!)