tag - Cargue archivos de 1GB usando fragmentación en PHP
subir multiples archivos php jquery (7)
"pero no puedo encontrar ningún equivalente de request.getInputStream en PHP".
fopen(''php://input'');
¿quizás?
Tengo una aplicación web que acepta cargas de archivos de hasta 4 MB. El script del lado del servidor es PHP y el servidor web es NGINX. Muchos usuarios han solicitado aumentar este límite drásticamente para permitir la carga de videos, etc.
Sin embargo, parece que no hay una solución fácil para este problema con PHP. Primero, del lado del cliente estoy buscando algo que me permita dividir archivos durante la transferencia. SWFUpload no parece hacer eso. Supongo que puedo transmitir cargas utilizando Java FX ( http://blogs.oracle.com/rakeshmenonp/entry/javafx_upload_file ) pero no puedo encontrar ningún equivalente de request.getInputStream en PHP.
El aumento de los límites de client_post del navegador o carga php.ini o max_execution
times no es realmente una solución para archivos realmente grandes (~ 1GB) porque tal vez el navegador agote el tiempo de espera y piense en todos los blobs almacenados en la memoria.
¿Hay alguna forma de resolver este problema usando PHP en el lado del servidor? Agradecería sus respuestas.
¿Qué le parece usar un applet de Java para la carga y PHP para su procesamiento?
Puede encontrar un ejemplo aquí para Jupload: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example
Creé un cliente JavaFX para enviar archivos grandes en fragmentos de tamaño máx. De publicación (estoy usando 2 MB) y un script de receptor de PHP para ensamblar los fragmentos en el archivo original. Estoy liberando el código bajo la licencia de apache aquí: http://code.google.com/p/gigaupload/ Siéntase libre de usar / modificar / distribuir.
Definitivamente puede escribir una aplicación web que acepte un bloque de datos (incluso a través de un POST) y añada ese bloque de datos a un archivo. Me parece que necesita algún tipo de aplicación del lado del cliente que tomará un archivo y lo dividirá en fragmentos, luego lo enviará a su servicio web un pedazo a la vez. Sin embargo, parece mucho más fácil crear un directorio sftp, y permitir que los clientes simplemente utilicen archivos con alguna aplicación cliente preexistente.
Eche un vistazo al protocolo tus, que es un protocolo basado en HTTP para cargas de archivos reanudables para que pueda continuar donde lo dejó sin volver a cargar datos enteros en caso de interrupciones. Este protocolo también ha sido adoptado por vimeo a partir de mayo de 2017.
Puede encontrar varias implementaciones del protocolo en diferentes idiomas here . En su caso, puede usar su cliente de javascript llamado uppy y usar la implementación del servidor basado en golang o php en un servidor.
Intenta usar el script bigupload
. Es muy fácil de integrar y puede cargar hasta 2 Gb en porciones. El tamaño del fragmento es personalizable.
plupload es una biblioteca javascript / php, y es bastante fácil de usar y permite fragmentar.
Sin embargo, usa HTML5.