[pyar] [Web] Descargar archivo asignando un nombre

Luis Masuelli luismasuelli en hotmail.com
Jue Mayo 29 11:20:38 ART 2014


No lo soluciona ni lo solucionara nunca. Si no queres hacerte cargo del ancho de banda, de la request se encarga otro y por otro lado. Si queres encargarte vos -ya que queres interceptar los encabezados- entonces el ancho de banda es propio. Puede que con los iteradores (stream=True) no te mastiques la memoria de tu maquina, pero aun asi el ancho de banda te lo vas a masticar porque sos quien envia el contenido. Eso es insalvable porque es todo server-side y las requests vienen enteritas de un solo servidor. Estaria bueno poder indicar "Mira: te indico a que te bajes el contenido, por tu cuenta, de <aca> pero luego de pedirle los headers a ese servidor adjuntes estos headers X Y Z que te estoy pasando ahora" pero creo que eso si existiera podria dar lugar a altisimos bugs de seguridad.

From: slacklinucs en gmail.com
Date: Thu, 29 May 2014 08:42:21 -0300
To: pyar en python.org.ar
Subject: Re: [pyar] [Web] Descargar archivo asignando un nombre

Manuel,
Me parece que una buena forma de ahorrar ancho de banda es iterando sobre el body de la respuesta de requests como mostré más arriba, con la solución JS si o si tenés que descargar el archivo completo a tu servidor *antes* de que le des al usuario el Save As. Según tengo entendido mega hostea los files en sus propios servidores así que no es lo mismo que lo que vos querés hacer acá.


En resumidas cuentas, si vos querés mostrarle el Save As al usuario con un filename que vos quieras, tenés que tener el archivo en tu server. El problema es ahorrar ancho de banda para los otros usuarios también, descargar el archivo completo a tu server antes de servirlo a tus usuarios no me parece que solucione el problema del ancho de banda.


Saludos!

2014-05-28 22:01 GMT-03:00 Leandro Brunner <leandrobrunner en yahoo.com.ar>:



  
    
  
  
    También puedes usar una combinación de ambas. Utilizar un proxy para
    los navegadores que no son compatibles, los cuales van a ser
    pocos... ;)

    

    Saludos. Si tienes alguna duda con JavaScript escribíme.

    El 28/05/14 21:55, Manuel Kaufmann
      escribió:

    
    
      
        
          Gracias por las respuestas.

            

            Creo que lo más fácil de implementar y que salga andando es
            hacer un proxy utilizando el ancho de banda de mi servidor,
            lo cuál es una cagada porque si hay 2 o 3 descargando
            simultánneamente ya se va a venir abajo seguramente.

            

          
          Por otro lado me gustaría investigar un poco más eso que dicen
          de Javascript y el "Filesystem API" para guardar en caché. Por
          ejemplo, https://mega.co.nz/
          funciona así. Empieza a bajar el archivo a "algún lado" y
          cuando termina te muestra una ventana onda "Save as...", le
          das la ubicación y solo lo mueve ahí (por detrás). Eso parece
          funcionar como dicen ustedes.

          

        
        Creo que voy a investigar un poco por el lado de javascript...

        

        
      
      

        

        2014-05-28 18:31 GMT-03:00 Martin
          Chikilian <slacklinucs en gmail.com>:

          
            Yo pensaba en algo como (sin probar):
              

              
              
                def view():
                  resp = requests.get(url_bandcamp_mp3,
                  stream=True)
                  def generate():

                        for chunk in resp.iter_content:

                            yield chunk

                    return Response(generate(),
                headers={'Content-Disposition': 'attachment;
                filename=my_own_filename.mp3'}, mimetype='audio/mpeg')
                

                
              
            
            

              

              
                2014-05-28 18:17 GMT-03:00 Sebastián Seba <ssebastianj en gmail.com>:

                
                  
                    
                      
                        

                          El 28 de mayo de
                            2014, 17:53, Martin Chikilian <slacklinucs en gmail.com>
                            escribió:
                            
                              

                              
                                Está interesante el tema,
                                  tal vez una combinación de esto ayude
                                  a tu caso?
                                  http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow
                                    + http://flask.pocoo.org/docs/patterns/streaming/
                                
                              
                            
                          
                          

                          

                          +1. 

                          

                        
                        En este caso ¿qué
                          convendría?

                          

                        
                        * Que Requests realice
                          el streaming.

                        
                        
                          * Que la vista de Flask haga el streaming.

                        
                        * Ambos hacen el
                          streaming.

                        
                      
                      

                    
                  
                  _______________________________________________

                    pyar mailing list pyar en python.org.ar

                    http://listas.python.org.ar/listinfo/pyar

                    

                    PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

                    

                    La lista de PyAr esta Hosteada en USLA - Usuarios de
                    Software Libre de Argentina - http://www.usla.org.ar

                  
                
              
              

            
            

            _______________________________________________

            pyar mailing list pyar en python.org.ar

            http://listas.python.org.ar/listinfo/pyar

            

            PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

            

            La lista de PyAr esta Hosteada en USLA - Usuarios de
            Software Libre de Argentina - http://www.usla.org.ar

          
        
        

        
        

        -- 

        Kaufmann Manuel

        -- http://mkaufmann.com.ar
      
      

      
      

      _______________________________________________
pyar mailing list pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
    
    

  


_______________________________________________

pyar mailing list pyar en python.org.ar

http://listas.python.org.ar/listinfo/pyar



PyAr - Python Argentina - Sitio web: http://www.python.org.ar/



La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar



_______________________________________________
pyar mailing list pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140529/ae3ebdf3/attachment-0001.html>


More information about the pyar mailing list