Если обратиться просто по ссылке test.ru/?file=photo, то браузер загрузит файл, но он пустойон не пустой, если его открыть нотепадом то вы увидите ошибки сервера, скорее всего связанные с определением размера файла с удаленного сервера. Для файлов не на локальном сервере размер файла можно получить через заголовки от сервера, например так:
$head = array_change_key_case(get_headers("http://212031.selcdn.ru/myAudio/pictures/audio/ae/BeRoliUlL/07c7ba62ae2e2b750c3588c73eab727c.png", TRUE));
$filesize = $head['content-length'];
$outputName = 'http://212031.selcdn.ru/myAudio/pictures/audio/ae/BeRoliUlL/07c7ba62ae2e2b750c3588c73eab727c.png';
header('Content-Disposition: attachment; filename="somefile.png"');
header("Content-Type: application/octet-stream");
header("Content-Length: " . $filesize);
echo (file_get_contents($outputName));
Если вы используете БД PostgreSQL, то можете хранить аттрибуты, к примеру, в JSON-поле таблицыво первых мускуль тоже умеет, во вторых это нехило нарушает нормальность таблиц, в третьих - кто-то видел тест по производительности выборки из жсон полей в постгри/мускуль? Хотелось бы глянуть как они работают, есть подозрение что не очень быстро. Буду благодарен за ссылочки.
$outputName = "https://storage.com/myAllFiles/oneFile/picture.png"
header('Content-Disposition: attachment; filename="somefile.png"');
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($outputName));
echo (file_get_contents($outputName));
Ну хотя бы склепать эти части, да и вверх и подвинуть.
2) Кроссдоменное полиси в настройках сервера по умолчанию НЕ РАЗРЕШАЕТ подключать скрипты через include/require со сторонних сайтов.
3) file_fet_contents теоретически должен отдавать РЕЗУЛЬТАТ выполнения скрипта на сервере, на котором скрипт лежит, почему у вас он его не отдает может быть миллион причин, например нужно быть залогиненым, или посылать запрос методом пост и тд. Без "посмотреть" не ясно в чем проблема, мало данных.