@s2sk

Как отправить картинку браузеру?

Привет.

До меня все никак не дойдет что я делаю неправильно. Хочу отправить браузеру картинку, а браузер мне выдает "файл поврежден". Вот таким кодом:

std::ifstream filePNG("image.png");
				
				filePNG.seekg(0, std::ios_base::end);
				long size = filePNG.tellg();
				filePNG.seekg(0, std::ios::beg);

				char* data = new char[size];	
				filePNG.read(data, size);

				response << "HTTP/1.1 200 OK\r\n"
					<< "Version: HTTP/1.1\r\n"
					<< "Content-Type: image/png\r\n"
					<< "Content-Length: " << size
					<< "\r\n\r\n"
					<< data;

				printf("img send");

send(client_socket, response.str().c_str(),
				response.str().length(), 0);
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Картинку не надо пытаться преобразовывать в строку. Ничего хорошего из этой идеи не выйдет.
Сначала отправляем заголовки - строкой. А потом картинку - как массив байт.

P.S. Заголовок Version - лишний.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
1. Оба потока открыть в двоичном режиме.
2. Операция << отправит наш PNG как ASCIIZ — то есть перестанет писать, когда попадётся нулевой символ. А надо целиком, командой write.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы