[Ajuda] Servidor http no Qt nao envia imagem
-
wrote on 24 Oct 2013, 23:12 last edited by
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....
-
wrote on 25 Oct 2013, 03:03 last edited by
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));
@ -
wrote on 25 Oct 2013, 13:07 last edited by
entao,eu tentei usar o QDataStream para abrir ele como binario, mas na hora que faco file.open() ele da um erro. esse 'e omeu problema... ele ao quer abrir a imagem...
-
wrote on 25 Oct 2013, 19:04 last edited by
Mas qual é o erro?
-
wrote on 27 Oct 2013, 17:54 last edited by
erro 5, quando eu uso file.error()....
a referencia do erro eh: The file could not be opened.
-
wrote on 29 Oct 2013, 01:17 last edited by
nao, pq o GET que o navegador envia ja tem a /.
o servidor ta funcionando, enviando arquivos de texto... mas nao envia imagens pq antes de envia-la para um QTextStrean ou QDataStrean ele da erro na hora que eu mando abrir.
-
wrote on 29 Oct 2013, 01:27 last edited by
Pra ser mais especifico, estava testando aqui, ele nao esta abrindo imagens do tipo png e .ico...
-
wrote on 29 Oct 2013, 02:28 last edited by
Entendi.
Sei que parecem perguntas idiotas, mas já checou a permissão dos arquivos? Você já trocou de "ReadWrite" para "ReadOnly"? O nome dos arquivos (maiúsculo/minusculo) estão batendo?
-
wrote on 29 Oct 2013, 12:41 last edited by
so nao chequei a permissao dos arquivos... vou checar e te falo
-
wrote on 29 Oct 2013, 12:45 last edited by
alterei as permissoes e continua insistindo em nao ler o arquivo....
vou postar o codigo completo mais tarde pra vc dar uma olhada pra mim... se puder e claro...
-
wrote on 29 Oct 2013, 14:53 last edited by
Pode mandar.
9/12