type octet from force disposition content application php http file download http-headers

php - octet - Guarde el archivo remoto que empuja los encabezados para forzar la descarga



php download xml file (2)

Puedo descargar archivos remotos usando PHP, pero ¿cómo se descarga desde un enlace que empuja los encabezados? Quiero decir, puedes hacer clic en algunos enlaces y forzará una descarga y te presentará un cuadro de diálogo para guardar el archivo. ¿Cómo puedo descargar y guardar este tipo de cosas usando PHP?

Cualquier ejemplo o enlace a tutoriales sería genial ya que no pude encontrar nada útil sobre este tema.

Gracias por cualquier ayuda

Actualizado y [SOLUCIONADO]

<?php set_time_limit(300); // File to download $remoteFile = $_GET[''url'']; $file = fopen($remoteFile, "r"); if (!$file) { echo "<p>Unable to open remote file./n"; exit; } $line = ''''; while (!feof ($file)) { $line .= fgets ($file, 4096); } //readfile($line); file_put_contents(''here2.mp4'', $line); fclose($file); ?>


Puede hacerlo de la misma manera que descarga sus archivos remotos. Esos valores de cabecera de "descarga forzada" solo indican a los agentes de usuario que desean mostrar los datos en línea para descargarlos. Pero no hace ninguna diferencia para su script porque no puede mostrar los datos.


Solo intenté reproducir la situación. Gubmo tiene razón, este método de descarga funciona para mí con Content-Type: application / octet-stream y Content-type: application / force- headers.

Como se explica aquí , HTTP 410 significa que la URL solicitada por el cliente ya no está disponible desde ese sistema. Esta no es una respuesta ''nunca se escuchó'', sino una respuesta ''ya no vive aquí'' . Tal vez tengan algún tipo de sistema antileaks.

Esto debe ser investigado. Si necesitan cookies, stream-context-create puede ayudar. O tal vez ellos verifican el referer. Pero estoy casi seguro de que ese problema no está en los encabezados.

Espero que esto ayude.

UPD Código de muestra sobre el que ha preguntado.

// file to download -- application/octet-stream $remoteFile = ''http://dev/test/remote/send.php''; // file to download -- application/force-download $remoteFile = ''http://chtyvo.org.ua/authors/Skriabin_Kuzma/Ya_Pobieda_i_Berlin.rtf.zip''; // file to store $localFile = ''kuzma.zip''; $fin = fopen($remoteFile, "r"); if (!$fin) { die("Unable to open remote file"); } $fout = fopen($localFile, "w"); if (!$fout) { die("Unable to open local file"); } while (!feof($fin)) { $line = fgets($fin, 1024); fwrite($fout, $line, 1024); } fclose($fout); fclose($fin);

Igual a los tuyos.