[Ajuda] Servidor http no Qt nao envia imagem
-
Fiz um servidor http usando o Qt, mas ele nao esta enviando imagens, pois nao consegue abrir o arquivo de imagem...
segue o trecho do codigo onde o erro acontece:
@
QString dir = "/home/meussites"+list.at(1);QFileInfo fileInfo( dir ); if ( fileInfo.isDir() ) dir+="index.html"; QFile file(dir); qDebug()<<dir; QString sufix=fileInfo.suffix(); if(sufix.compare("jpg")== 0)sufix = "image/jpeg"; else if(sufix.compare("gif")== 0)sufix = "image/gif"; else if(sufix.compare("png")== 0)sufix = "image/png"; else if(sufix.compare("ico")== 0)sufix = "image/x-icon"; else if(sufix.compare("htm")== 0)sufix = "text/html"; else if(sufix.compare("html")== 0)sufix = "text/html"; else if(sufix.compare("css")== 0)sufix = "text/css"; else if(sufix.compare("js")== 0)sufix = "text/javascript"; else if(sufix.compare("au")== 0)sufix = "audio/basic"; else if(sufix.compare("wav")== 0)sufix = "audio/wav"; else if(sufix.compare("mp3")== 0)sufix = "audio/mp3"; else if(sufix.compare("avi")== 0)sufix = "video/x-msvideo"; else if(sufix.compare("mpeg")== 0)sufix = "video/mpeg"; //aqui acontece o erro if (!file.open(QFile::ReadWrite )) { qDebug()<<"error ao abrir o arquivo:"<<dir; QString resposta ="HTTP/1.1 404 OK\r\n"; QString cabecalho= resposta+"\r\n"; int erro = tcpSocket->write(cabecalho.toLocal8Bit(),cabecalho.toLocal8Bit().count()); }else
@
tentei abrir ele como arquivo binario mas mesmo assim deu erro...
Preciso transformar a imagem em uma Stream para enviar ao navegador...
desde já agradeço a ajuda....
-
Qual é o erro que apresenta?
Para ler binário, use o QDataStream, mais ou menos assim (não testei):
@
QFile file("image.jpg");
if (!file.open(QIODevice::ReadOnly))
return;int size = file.size(); //Não é a melhor maneira.... o arquivo pode ser muito grande para alocar....
char *buffer = new char[size];QDataStream in(&file);
in.readRawData(buffer, sizeof(buffer));
@