Avatar billede buck Nybegynder
24. februar 2004 - 09:54 Der er 8 kommentarer og
2 løsninger

ForceType problem i .htaccess

Hej jeg har et lille platform-afhængigt problem...

se her http://www.siskytte.dk/kap.php
midt på den side har jeg 3 txt filer til download.

Jeg har sat følgende ind i .htaccess
<Files skytte.txt>
ForceType application/x-octet-stream
</Files>
<Files forening.txt>
ForceType application/x-octet-stream
</Files>
<Files skytdisc.txt>
ForceType application/x-octet-stream
</Files>

Det bevirker at når man klikker på en af txt filerne for at downloade dem, så vil windows forsøge at gemme denne på din PC.
Normalt ville en txt fil blive vist i notepad, hvilket ikke er så hensigtsmæssigt.

Dette virker også ganske glimrende på min Win98 maskine.
Men så skulle jeg lige prøve på en XP maskine, og der bliver txt filerne åbnet i notepad. Dvs. XP er åbenbart ligeglad med min ForceType.

Nogen der har et tip til hvordan jeg løser dette, så det virker ens på alle platforme?
Avatar billede limemedia Nybegynder
24. februar 2004 - 10:08 #1
via php har jeg før fået det til at virke, med følgende, testet med .doc, .vcf og .pdf filer.

header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Disposition: attachment; filename=".$filename.";");
header("Content-Type: application/octet-stream");
   
header("Content-Length: ".filesize($file));
readfile($file);

ved at gøre det via php fremfor i din httpd.conf fil, sikrer du desuden portabilitet så dit system ikke afhænger af rettelser direkte i apache konfigurationen
Avatar billede buck Nybegynder
24. februar 2004 - 10:12 #2
nu er min kap.php lidt speciel... hvor ville du indsætte dit forslag?
Avatar billede buck Nybegynder
24. februar 2004 - 10:14 #3
har lagt den her for gennemsyn: http://www.siskytte.dk/kap.txt
Avatar billede limemedia Nybegynder
24. februar 2004 - 10:22 #4
Hvis vi var lidt smarte, omskrev vi dine links fra http://www.siskytte.dk/udvalg/kap/skytte.txt til http://www.siskytte.dk/udvalg/download.php?fil=1

hvor download.php så vil indeholde en kode ala
<?php
    if (!isset($_GET['id'])) die('System Error');
    $fileid = $_GET['id'];

    $filearray = array(
        '1' => 'skytte.txt',
        '2' => 'forening.txt',
        '3' => 'skytdisc.txt'
    );

    $file = $filearray[$fileid];

    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    header("Content-Disposition: attachment; filename=".$filearray[$fileid].";");
    header("Content-Type: application/octet-stream");

    header("Content-Length: ".filesize($file));
    readfile($file);
?>
Avatar billede limemedia Nybegynder
24. februar 2004 - 10:23 #5
den lidt omstændige version fremfor at skrive fil=skytte.txt er selvfølgelig for at beskytte mod at man ikke kan få downloadet en vilkårlig side, men udelukkende dé som du ønsker at offentliggøre ;)
Avatar billede buck Nybegynder
24. februar 2004 - 10:37 #6
System Error
Avatar billede buck Nybegynder
24. februar 2004 - 10:41 #7
lige en kommentar om filplaceringer:
kap.php der indeholder linket ligger i roden /
kapdown.php (som jeg valgte at kalde den) ligger i /udvalg/kap sammen med de 3 txt filer...
Avatar billede limemedia Nybegynder
24. februar 2004 - 11:13 #8
Avatar billede buck Nybegynder
24. februar 2004 - 18:02 #9
samme fejl med id=1
Avatar billede limemedia Nybegynder
24. februar 2004 - 18:08 #10
prøv at køre en print_r($_GET) for at se om id overføres korrekt - kan umiddelbart ikke se hvorfor det ikke burde virke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester