Как исправить этот заголовок для потоковой передачи? - PullRequest
0 голосов
/ 08 февраля 2012

Мне нужно передать медиафайл с другого сервера через этот php-файл.

<?php
$out = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Content-type: audio/mpeg\r\n", 
  )
);

$stream = stream_context_create($out);

$end = fopen('http://example.com/audio.mp3', 'r', false, $stream);
fpassthru($end);
readfile($end);
?>

Но заголовок не работает.Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

После открытия добавить

header('content-type: audio/mpeg');
or
header('content-type: application/octet-stream');
0 голосов
/ 08 февраля 2012

Вы отправляете заголовок в неправильном направлении.Что вы сделали, так это сообщили исходному серверу, что вы будете отправлять ему audio/mpeg в GET-запросе - что в любом случае недопустимо, GET-запросы не содержат содержимого.Что вам действительно нужно сделать, это отправить его клиенту, который будет получать контент.

Вам не нужен контекст потока для этой задачи - попробуйте этот код:

<?php

  // Try and open the remote stream
  if (!$stream = fopen('http://example.com/audio.mp3', 'r')) {
    // If opening failed, inform the client we have no content
    header('HTTP/1.1 500 Internal Server Error');
    exit('Unable to open remote stream');
  }

  // It's probably an idea to remove the execution time limit - on Windows hosts
  // this could result in the audio stream cutting off mid-flow
  set_time_limit(0);

  // Inform the client we will be sending it some MPEG audio
  header('Content-Type: audio/mpeg');

  // Send the data
  fpassthru($stream);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...