2009-07-31 7 views
0

Das scheint wie eine wirklich einfache Aufgabe, also ertragen Sie mit mir. Ich versuche, einen Server zu erweitern, der Dateien und Webseiten bereitstellt. Derzeit wird der Server eine HTTP-Anforderung, analysiert sie und ruft eine Funktion namens sendfile:Serving up eine PNG-Datei über ifstream

void sendFile(ostream& ostr, std::string filename) { 
    std::ifstream ifs(filename.c_str(), std::ios_base::binary); 
    ostr << ifs.rdbuf(); 
} 

Dieses Schema zur Zeit funktioniert gut für Textdateien wie JavaScript und CSS, die in demselben Verzeichnis wie der Server binär sind. Aber wenn ich versuche, eine PNG-Datei bereitzustellen, sitzt der Browser für immer. Es scheint, als wäre der Unterschied, dass die PNG-Datei keine Textdatei ist, aber wenn das tatsächlich das Problem ist, was sollte ich anstelle von ifstream verwenden? Ich sehe, dass das binäre Flag std :: ios_base :: angegeben ist.

Danke!

Antwort

1

Sie sollten wirklich die Länge und den Mime-Typ in den http-Headern festlegen.