Hallo,
ich habe ein Problem mit Apache2.0 und dynamisch eingebundenen PNG-files.
Die Webseiten werden dynamisch über eine ISAPI Extension generiert und um die PNG-files anzuzeigen word folgender Code in der dll verwendet:
*pCtxt << "<IMG border=\"0\" usemap=\"#rrimage2\" src=\"/scripts/isalis.dll?GetImage?ImageIndex=" << m_pIsAlis->m_pImage[nIdx].szIdx
<< "\" width=\"650\" height=\"300\"></IMG>";
Dieser Index ist für den Speicher, aus dem das File gelesen wird. Im Aufruf "GetImage" steckt folgender Code:
void CIsalisExtension::GetImage(CHttpServerContext* pCtxt, LPCTSTR pstrImageIndex)
{
long lImageIndex;
// muss thread-sicher sein
m_cs.Lock(); // muss thread-sicher sein, (falls in anderem Thread Konfigurationen nachgeladen werden -> betrifft u.a. Wörterbuch)
lImageIndex = GetImageIndex(pstrImageIndex);
if ( (lImageIndex >= 0) && (lImageIndex < m_nImgMemSize) ) {
if (m_pImage[lImageIndex].ptr != NULL) {
if (m_pImage[lImageIndex].len >= 0) {
/* Image an Client übertragen */
OutputImage(pCtxt, (char *)m_pImage[lImageIndex].ptr, (long)m_pImage[lImageIndex].len);
}
}
}
m_cs.Unlock();
}
.
.
.
.
void CIsalisExtension::OutputImage(CHttpServerContext* pCtxt, char* pData, long lLen)
{
char szBuff[50];
long lSize = lLen;
// Start by writing the proper content type to the client for IIS
AddHeader(pCtxt, _T("Content-Type: image/png\r\n"));
wsprintf(szBuff, "Content-length: %ld\r\n", lSize);
AddHeader(pCtxt, szBuff);
// Start by writing the proper content type to the client for Apache
// AddHeader(pCtxt, _T("Content-Type: image/png\n"));
// wsprintf(szBuff, "Content-length: %ld\n\n", lSize);
// AddHeader(pCtxt, szBuff);
CBinaryHtmlStream* pStream = new CBinaryHtmlStream;
ISAPIVERIFY(pStream != NULL);
for (long lCount = 0; lCount<lSize; lCount++)
*pStream << *(pData+lCount);
*pCtxt << *pStream;
delete pStream;
}
.
.
.
Nun ist meine Frage:
Ich habe den Header für den IIS. Der auskommentierte Header soll für den Apache sein. Ich weiss nur nicht genau wie dieser aussehen soll.
Oder muss ich im Config-file des Apaches noch etwas einbinden. Die dll läuft soweit. Normale Bilder, die aus einer Datei eingebunden sind,
werden richtig angezeigt. Nur die PNGs, die durch den Stream eingebunden werden, sind nicht zu sehen.
Danke