Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

248
Vistas
¿Es posible descargar un archivo python desde un sitio web?

Estoy creando un sitio web donde los usuarios pueden descargar varios datos de programas y secuencias de comandos utilizados en esos datos. Me pregunto si es posible descargar un script de Python directamente. O tengo que cerrar la cremallera o algo?

En este momento, enumero cada script de python asociado con un programa como un enlace para descargar. Sin embargo, el navegador dice "Error: problema del servidor" cuando hago clic en el enlace. Usé un archivo csv de prueba en lugar de uno de los scripts de Python (en la misma carpeta en el servidor) y se descargó correctamente, por lo que tengo acceso a la carpeta donde están los scripts.

Solo busco confirmar: ¿no es posible descargar un script de python directamente?

Aquí está el código en caso de que sea útil:

 var site_url = "<?php echo site_url();?>"; var timestamp=""; var scriptsrendered='<table class="table table-striped">'; i=0; while (i<v.scripts.length) { if (v.scripts[i].fldTimestamp===null) { timestamp ="unknown date"; } else { timestamp=new Date(parseInt(v.scripts[i].fldTimestamp)*1000); } scriptsrendered+='<tr><td style="width:150px;">'+timestamp+'</td>'; scriptsrendered+='<td><a href="'+site_url+"nefin-temp/nefin_scripts/"+v.scripts[i].fldFileName+'" download="'+v.scripts[i].fldFileName+'">'+v.scripts[i].fldFileName+'</a></td></tr>'; i++; } scriptsrendered+='</table>'; $('#programScripts').html(scriptsrendered);

Editar:

No veo nada en la consola del navegador en cuanto a errores. Los registros de PHP también están limpios. El registro de errores de Apache tiene:

 [Wed Jun 08 13:26:37.729794 2022] [fcgid:warn] [pid 65316:tid (104)Connection reset by peer: [client 132.198.100.190:38728] [request de6efb774b83e68d900a90abb805c0d9] mod_fcgid: error reading data from FastCGI server, referer https://dev.vmc.w3.uvm.edu/nefin-xana/extractor [Wed Jun 08 13:26:37.729823 2022] [core:error] [pid 65316:tid [client 132.198.100.190:38728] [request de6efb774b83e68d900a90abb805c0d9] End of script output before headers: FEMCFHM_munger.py, referer https://dev.vmc.w3.uvm.edu/nefin-xana/extractor

El archivo es pequeño, por lo que no debería ser un problema de tiempo de espera. Veré si puedo averiguar si el tipo de archivo está bloqueado para descargar en algún lugar...

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Usando el código de esta respuesta ( Cómo forzar la descarga de archivos con PHP ) combinado con un simple ajuste de htaccess, no necesita actualizar la página.

Cree un archivo php llamado downloader.php con el siguiente código. Querrá hacer una verificación de archivos para asegurarse de que están cargando los archivos correctos, pero para este ejemplo, esto debería funcionar.

Modificó la descripción de la respuesta original:

En el siguiente ejemplo, obtenemos el nombre del archivo a través de la cadena de consulta. php://output es un flujo de solo escritura (generalmente utilizado por echo o print). después de eso, solo necesita configurar los encabezados requeridos y llamar a stream_copy_to_stream (origen, destino). El método stream_copy_to_stream() actúa como una tubería que toma la entrada de la secuencia de origen (secuencia de lectura) y la canaliza a la secuencia de destino (secuencia de escritura) y también evita el problema de agotamiento de la memoria permitida para que pueda descargar archivos que son más grandes que tu PHP memory_limit.

 $file = $_GET["file"]; $readableStream = fopen('nefin-temp/nefin_scripts/$page', 'rb'); $writableStream = fopen('php://output', 'wb'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="$file"'); stream_copy_to_stream($readableStream, $writableStream); ob_flush(); flush();

Luego, en su htaccess, agregue la siguiente línea.

 RewriteRule ^nefin-temp/nefin_scripts/(.*)$ downloader.php?file=$2 [L]

Esto forzará que los archivos de su carpeta de scripts se carguen en el archivo downloader.php.

En lugar de htaccess, también puede simplemente actualizar sus enlaces de la siguiente manera:

cambie nefin-temp/nefin_scripts/ en las URL a downloader.php?file= y siga usando downloader.php

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda