para - guardar archivo en ruta especifica java
Descarga de archivo grande (15)
¿Puedes dividir los archivos en pedazos y luego volver a unirlos después de la descarga?
Internet Explorer tiene un límite de descarga de archivos de 4 GB (2 GB en IE6). Firefox no tiene este problema (aún no ha probado Safari) (Más información aquí: http://support.microsoft.com/kb/298618 )
Estoy trabajando en un sitio que permitirá al usuario descargar archivos muy grandes (hasta y superando los 100 GB)
¿Cuál es la mejor manera de hacerlo sin usar FTP ? El usuario final debe poder descargar el archivo desde su navegador usando HTTP. No creo que Flash o Silverlight puedan guardar los archivos en el cliente, por lo que yo sé, no lo cortarán.
Supongo que necesitaremos un applet de ActiveX o Java para llevarlo a cabo. Algo así como el administrador de descargas que usa MSDN.
¿Alguien sabe de un componente comercial (o gratuito) que hará eso? No queremos que el usuario tenga que instalar un administrador de descargas de "navegador de ancho" (como GetRight), queremos que solo funcione con la descarga en nuestro sitio.
Actualización: Aquí hay información adicional para ayudar a aclarar lo que estoy tratando de hacer. La mayoría de los archivos por encima del límite de 4 GB serían grandes archivos de video HD (es para una empresa de edición de video). Estos serán descargados por los usuarios a través de Internet, esto no va a ser personas en una red local. Queremos que los archivos estén disponibles a través de HTTP (algunos usuarios estarán detrás de firewalls que no permitirán FTP, Bittorrent, etc.). Será una biblioteca de archivos que el usuario final podría descargar, por lo que no estamos hablando de una gran descarga de una sola vez. Se descargarán diferentes archivos grandes de forma semi-regular.
Hasta el momento Vault que @ Edmund-Tay sugirió es la solución más cercana hasta ahora. El único problema es que no funciona para archivos de más de 4 GB (falla instantáneamente antes de iniciar la descarga, probablemente estén utilizando un entero de 32 bits en algún lugar que excede la longitud del contenido del archivo).
Un applet de java (o componente ActiveX ya que el problema solo existe en IE) que funcionaba como el artículo @spoulson vinculado sería la mejor solución, pero hasta ahora no he tenido suerte para encontrar uno que haga algo como eso (descargas multiparte , curriculum vitae, etc.).
Parece que deberíamos escribir el nuestro. Otra opción sería escribir una aplicación .Net (tal vez ClickOnce) que esté asociada con una extensión o tipo mime. Luego, el usuario estaría descargando un pequeño archivo del servidor web que se abre en la aplicación exe / ClickOnce que le dice a la aplicación qué archivo descargar. Así es como funciona el programa de descarga de MSDN. El usuario final solo tendría que descargar / instalar un EXE una vez. Eso sería mejor que descargar un exe cada vez que quisieran descargar un archivo grande.
@ceejayoz
Estoy totalmente de acuerdo, pero es parte del requisito para nuestro cliente. Habrá acceso FTP, pero cada usuario tendrá la opción de descargar a través de HTTP o FTP. Hay algunos usuarios que estarán detrás de los firewalls corporativos que no permiten FTP
He visto otros sitios hacer esto en el pasado (MSDN, Adobe), así que esperaba que ya hubiera algo en lugar de tener que hacer uno en casa (y aprender Java y / o ActiveX)
@jjnguy Estoy buscando un applet de java o un componente de ActiveX que haga eso por mí. Estos son usuarios no técnicos, por lo que solo queremos que hagan clic en descargar y el archivo completo termine en la ubicación especificada
@levand El problema solo existe en IE (funciona en Firefox) así que aunque ActiveX solo funcionaría en IE, IE es el único para el que necesitamos trabajar.
@travis - idea interesante. No estoy seguro si funcionará para lo que necesito, pero lo tendré en cuenta. Espero encontrar algo para integrar con el sitio existente en lugar de tener que ir a un tercero. También me requeriría configurar un rastreador bittorrent que no sería tan fácil como parece para esta aplicación porque los diferentes usuarios tendrán diferentes accesos a diferentes archivos.
@levand:
Mi preferencia real, como usuario, en estas situaciones es descargar un archivo .exe liviano que descarga el archivo por usted.
Eso es un obstáculo para muchos, muchos sitios. Los usuarios son o deberían ser extremadamente reacios a descargar archivos .exe desde sitios web y ejecutarlos de cualquier manera. Incluso si no siempre son tan cautelosos, el comportamiento incauto no es algo que debamos alentar como desarrolladores responsables.
Si está trabajando en algo parecido a la intranet de una empresa, un .exe es potencialmente una solución adecuada, ¿pero para la red pública? De ninguna manera.
@ TonyB:
¿Cuál es la mejor manera de hacerlo sin usar FTP?
Lo siento, pero tengo que preguntar por qué el requisito. Su pregunta me dice lo siguiente: "¿Cuál es la mejor manera de cocinar un bistec sin carne o fuente de calor?" FTP fue diseñado para este tipo de cosas.
@travis
Lamentablemente tiene que ser a través de HTTP dentro del navegador de los usuarios. Actualizaré la pregunta para ser más claro al respecto.
Digo administrador de descargas instaladas una vez, similar a msdn.
Pero convertirse en CDN sin un protocolo más optimizado para el trabajo no es una tarea fácil. No puedo imaginarme un modelo comercial que valga la pena tener descargas de archivos tan grandes como una competencia central a menos que esté haciendo algo como msdn. Si creas un cliente grueso, al menos tienes la oportunidad de tener más tiempo con los usuarios, por publicidad o algún otro modelo de ingresos, ya que probablemente pagues cientos de miles de dólares por alojar dicho servicio.
Por favor, no use ActiveX ... Estoy tan harto de los sitios que solo se pueden ver en IE.
Mi preferencia real, como usuario, en estas situaciones es descargar un archivo .exe liviano que descarga el archivo por usted.
Ya han existido algunas versiones basadas en la web ( bitlet , w3btorrent ), y Azureus se creó utilizando Java, por lo que definitivamente es posible.
Editar: @TonyB ¿está limitado al puerto 80?
El problema con el enfoque de applet mencionado es que, a menos que el usuario final modifique sus propiedades de seguridad de Java, su applet no tendrá permiso para guardar en el disco duro.
Es posible usar Java Web Start (también conocido como JNLP). Creo que si se trata de una aplicación firmada, puede obtener el permiso adicional para escribir en el disco duro. Esto no es muy diferente del enfoque de descargar un exe. El problema con esto es que el usuario debe tener la versión correcta de Java instalada y debe tener la configuración de la capacidad de Java Web Start correctamente.
Recomendaría el enfoque de exe ya que será el más fácil de usar para los usuarios no técnicos.
Si no desea escribir el código java de manera interna, existen soluciones de applet comerciales disponibles:
Ambos tienen versiones de evaluación que puedes descargar y probar.
Hay algunos usuarios que estarán detrás de los firewalls corporativos que no permiten FTP ...
¿Es probable que los usuarios con firewalls restrictivos puedan instalar y ejecutar un archivo .exe desde su sitio web?
Algunas ideas:
- Blizzard usa un .exe ligero .exe envoltorio BitTorrent para sus parches. No estoy del todo seguro de cómo se hace, pero parece una versión de marca del cliente oficial de BitTorrent.
- Suba a Amazon S3, proporcione el enlace de torrente del archivo (todos los archivos S3 se habilitan automáticamente con BitTorrent), más el enlace completo de descarga HTTP como alternativa. Ver la documentación de S3
Eche un vistazo a cURL . Este artículo describe cómo hacer una descarga simultánea en varias partes a través de HTTP. He usado cURL en el pasado para administrar descargas FTP de archivos de más de 300GB.
Otro consejo: puede aumentar los tiempos de descarga aún más si aumenta el tamaño de la ventana TCP en la configuración de la NIC del cliente. Configúrelo tan alto como lo permita el sistema operativo y verá una mejora de hasta 2 veces según su red física. Esto funcionó para mí en Windows 2000 y 2003 al enviar FTP a través de una WAN. El inconveniente es que puede aumentar la sobrecarga para el resto del tráfico de red que solo quiere unos pocos KB para un paquete de red, pero ahora se ve obligado a enviar / recv en paquetes de 64 KB. Su experiencia puede ser diferente.
Editar: ¿Qué es exactamente lo que estás tratando de lograr? ¿Quién es la audiencia? Se supone por un momento que estás buscando hacer esto en tu propia red; pero pareces dar a entender que el lado del cliente es alguien en Internet. Creo que necesitamos requisitos más claros.
¿Qué pasa con decir "Recomendamos que instale Free Download Manager para descargar este archivo. Tendrá la ventaja adicional de poder reanudar el archivo y acelerar la descarga".
Personalmente, nunca descargo nada usando la herramienta integrada de descarga del navegador a menos que sea necesario (por ejemplo, archivos adjuntos de Gmail)