Hoi.
Basisinfo:
Ik ben bezig met een Perl-scriptje dat aan de hand van enkele voorwaarden een bepaald bestand moet teruggeven. Het script staat en draait op een http-server, en de client komt dus binnen met een gewone browser. Welk bestand teruggegeven moet worden, hangt af van die voorwaarden. De bestanden staan verspreid over de harde schijf en het is niet practisch om ze in de directory van de webserver te zetten.
Software:
Ik werk met Windows 98. Xitami is mijn webserver. Ik gebruik de ActiveState port van Perl, versie 5.6.1.
Het probleem:
Het script loopt lekker, bepaalt welk bestand er teruggegeven moet worden, opent dat, leest dat in en stuurt dat dan weer naar de server, die het doorgeeft aan de client. Dat werkt dus goed. Maar omdat de browser natuurlijk een GET gedaan heeft op dldoc.pl (zo heet het script), wil hij het te downloaden bestand (bijvoorbeeld nfeb04.doc) opslaan als dldoc.pl.
Ik begrijp waarom dat zo gebeurt, want de client weet niet anders dan dat hij dldoc.pl zit te downloaden, en heeft niet door dat hij in feite de inhoud van nfeb04.doc doorkrijgt.
De vraag:
Hoe kan ik ervoor zorgen dat de client weet dat het te downloaden bestand nfeb04.doc (of njan04.doc, of ndec03.doc, dat ligt dus aan die voorwaarden welke het is) moet heten, en niet dldoc.pl?
Het geprobeerde:
Ik heb gekeken naar welke headers HTTP allemaal kent en ik hoopte dat daar iets tussen zou staan als 'Filename: blaat' maar helaas.
Verder heb ik wel een vatsig truukje bedacht, maar daar ben ik niet zo heel blij mee: het script kopieert het te downloaden bestand naar de eigen directory en returnt een klein automatisch gegenereerd bestandje met daarin een HTTP-header (weet zo ff niet meer welke) die ervoor zorgt dat de browser het zojuist gekopieerde bestand gaat downloaden. Dan klopt de bestandsnaam wel, maar het is nogal een slordige work-around vind ik.
De dank bij voorbaat:
Bij voorbaat dank.
Basisinfo:
Ik ben bezig met een Perl-scriptje dat aan de hand van enkele voorwaarden een bepaald bestand moet teruggeven. Het script staat en draait op een http-server, en de client komt dus binnen met een gewone browser. Welk bestand teruggegeven moet worden, hangt af van die voorwaarden. De bestanden staan verspreid over de harde schijf en het is niet practisch om ze in de directory van de webserver te zetten.
Software:
Ik werk met Windows 98. Xitami is mijn webserver. Ik gebruik de ActiveState port van Perl, versie 5.6.1.
Het probleem:
Het script loopt lekker, bepaalt welk bestand er teruggegeven moet worden, opent dat, leest dat in en stuurt dat dan weer naar de server, die het doorgeeft aan de client. Dat werkt dus goed. Maar omdat de browser natuurlijk een GET gedaan heeft op dldoc.pl (zo heet het script), wil hij het te downloaden bestand (bijvoorbeeld nfeb04.doc) opslaan als dldoc.pl.
Ik begrijp waarom dat zo gebeurt, want de client weet niet anders dan dat hij dldoc.pl zit te downloaden, en heeft niet door dat hij in feite de inhoud van nfeb04.doc doorkrijgt.
De vraag:
Hoe kan ik ervoor zorgen dat de client weet dat het te downloaden bestand nfeb04.doc (of njan04.doc, of ndec03.doc, dat ligt dus aan die voorwaarden welke het is) moet heten, en niet dldoc.pl?
Het geprobeerde:
Ik heb gekeken naar welke headers HTTP allemaal kent en ik hoopte dat daar iets tussen zou staan als 'Filename: blaat' maar helaas.
Verder heb ik wel een vatsig truukje bedacht, maar daar ben ik niet zo heel blij mee: het script kopieert het te downloaden bestand naar de eigen directory en returnt een klein automatisch gegenereerd bestandje met daarin een HTTP-header (weet zo ff niet meer welke) die ervoor zorgt dat de browser het zojuist gekopieerde bestand gaat downloaden. Dan klopt de bestandsnaam wel, maar het is nogal een slordige work-around vind ik.
De dank bij voorbaat:
Bij voorbaat dank.
Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea