Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > CGI, C++ и бинарные файлы


Автор: vandaler 23.5.2012, 17:38
Задача следующая: выдать пользователю любой файл, какой он ни попросит, имеющийся в архиве черех web-интерфейс.
Есть программа на С++, которая считывает бинарный файл в массив char*, а потом выводит в std::cout.  Если воспользоваться ею напрямую и перенаправить вывод в файл, то все открывается, файл приходит без искажений.
У меня не выходит выдать файл через скрипт, выходит только в случае html.
Скрипт следующий:
Код

#!/bin/bash

code=${QUERY_STRING:-0}
ID=`echo $code | awk -F_ '{print $1;}'`
ver=`echo $code | awk -F_ '{print $2;}'`
MIME=`echo $code | awk -F_ '{print $3;}'`
enc=`echo $code | awk -F_ '{print $4;}'`

echo "Content-type: $MIME; charset=$enc"
#echo "Content-type: $MIME"
echo -e "\x0D\x0A\x0D\x0A"

/home/ak/proj/get $ID $ver


Последняя строка и есть моя программа.
Помогите советом

Автор: feodorv 23.5.2012, 20:24
Цитата(vandaler @  23.5.2012,  18:38 Найти цитируемый пост)
CGI, C++ и бинарные файлы

Честно говоря, C++ здесь совсем не причём, даже если Вы приведёте исходный текст /home/ak/proj/get, которая и так не совсем понятно, что делает...

Цитата(vandaler @  23.5.2012,  18:38 Найти цитируемый пост)
Задача следующая: выдать пользователю любой файл, какой он ни попросит, имеющийся в архиве черех web-интерфейс.

Задача стоИт в C++ или shell?

Цитата(vandaler @  23.5.2012,  18:38 Найти цитируемый пост)
Помогите советом 

Обратите внимание на Content-type... Да и вообще, приведённый скрипт можно запускать и без CGI, необходимо проверить, правильно ли вообще он работает...

Автор: volatile 23.5.2012, 23:32
Цитата(feodorv @  23.5.2012,  20:24 Найти цитируемый пост)
Обратите внимание на Content-type... 

Да, скорей всего именно в этом дело, раз 
Цитата(vandaler @  23.5.2012,  17:38 Найти цитируемый пост)
выходит только в случае html.


попробуйте поставить:
"Content-Type: application/octet-stream"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)