Avatar billede soelle Nybegynder
13. september 2007 - 10:33 Der er 13 kommentarer og
1 løsning

Slet fil efter download

Jeg skal lave et login som kun viser de PDF filer som brugeren har adgang til. Jeg kan kun have PDF filerne liggende 1 gang hver. For at undgå at lave den direkte sti til filerne vil jeg kopiere dem til et tempnavn som de så kan downloade fra, men hvordan sletter jeg automatisk tempfilen igen efter endt download?

Hvis der altså ikke en mere fiks måde at gøre det hele på.
Avatar billede Slettet bruger
13. september 2007 - 10:44 #1
En måde at gøre det på er at slette filen efter f.eks. 5 minutter eller en time, når et download er begyndt.

hvis omstændighederne tillader det ville jeg dog i stedet vælge at lade brugeren trykke på en knap når downloadet er færdigt, hvor filen så slettes.
Avatar billede soelle Nybegynder
13. september 2007 - 12:32 #2
Jeg er bare bange for at brugeren ikke får trykket på knappen, og det er nogle temmelig store filer og der er mange brugere så det kan hurtigt løbe op i plads.

Har du en løsning til at slette efter x antal minutter efter påbegyndt download?
Avatar billede showsource Seniormester
13. september 2007 - 12:37 #3
Du kan jo lade et script sende filen til brugeren, og derefter slette den, unlink()
Avatar billede Slettet bruger
13. september 2007 - 13:09 #4
soelle. Som før beskrevet ville jeg sætte end tidsbegrænsning - dvs. slette filen, lad os sige en time efter brugeren har trykket download. Du kan jo sagtens på anden måde gøre filen utilgængelig efter et enkelt download (hvis du har nogle rækker i en database kan du lave et felt "allowDownload" e.l).

showsource: Afhængig af hvor stor filen er, vil det være en dårlig idé/umuligt at slette den samtidig med at man sender den til brugeren. - Så vil man løbe ind i, at brugeren downloader filen samtidig med at den ikke findes mere (er blevet slettet).
Avatar billede showsource Seniormester
13. september 2007 - 13:26 #5
$string = file_get_contents($fil);
print $string;
unlink($fil);
Avatar billede showsource Seniormester
13. september 2007 - 13:30 #6
Eller

<?php

$mappe = $_SERVER["DOCUMENT_ROOT"] ."/Musik/";

if(isset($_GET["file"]) && is_file($mappe . $_GET["file"])){

$downfile = file_get_contents($mappe . $_GET["file"]);

header("Content-Disposition: attachment; filename=". $_GET["file"] ."");
header("Content-Type: application/octet-stream");
//header("Content-Length: ".filesize($mappe . $_GET["file"]));
header("Content-Length: ".strlen($downfile));
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT");

print $downfile;

unlink($mappe . $_GET["file"]);

exit;
}

?>
Avatar billede nykh Nybegynder
13. september 2007 - 13:33 #7
hvis man benytter et upload script, så er der vel ikke nogen grund til at lægge filen i en tempmappe, den skal bare ligge en sted hvor brugeren ikke kan nå den, så sørger scriptet for resten
Avatar billede Slettet bruger
13. september 2007 - 14:06 #8
Soelle ->
Hvis du sætter en tidsbegrænsning på filen, sørger du også for at brugeren kan downloade filen igen, hvis han eksempelvis har afvist filen i sin browser.
Avatar billede Slettet bruger
13. september 2007 - 14:06 #9
Jeg gider nykh ret mht. temp-mappen.
Avatar billede soelle Nybegynder
13. september 2007 - 16:26 #10
Jeg benytter mig ikke af et upload script, så derfor behøver jeg jo så nok tempmappen. Ellers kan man brugeren vel gætte sig til den rigtige sti, og det må ikke kunne misbruges på den måde.

Filerne er temmelig store op til 30 Mb så det er ikke hensigtmæssigt at slette samtidig med at sende.

I showsource eksempel, bliver filen da slette efter en bestemt tid? Og hvad hvis browservinduet lukkes, slettes filen så stadig? (Ja, undskyld jeg er lidt grøn)
Avatar billede soelle Nybegynder
13. september 2007 - 16:28 #11
Jeg kan tilføje at der er 3 filer til download. Alt efter hvilket niveau brugeren så har  adgang til skal de så kunne downloade 1, 2 eller alle 3 filer. I databasen har jeg skrevet hvilket niveau brugeren er på.
Avatar billede soelle Nybegynder
18. september 2007 - 19:55 #12
Smider du et svar showsource, så kan I da dele lidt point.
Avatar billede showsource Seniormester
19. september 2007 - 05:19 #13
ingen point, ellers tak
Avatar billede Slettet bruger
20. september 2007 - 19:41 #14
Tak for point.. Jeg synes ikke rigtigt vi nåede frem til et svar, så det vil egentlig være mest fair hvis du også får nogle point showsource.

http://www.eksperten.dk/spm/797405
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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