Download alle file types

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Kevin J

Kevin J

02/01/2015 07:57:08
Quote Anchor link
Hallo,

Ik probeer iets te maken dat mensen een bestand downloaden zonder dat ze zelf naar die link gaan dus voorbeeld:
Dit is de link waar ze het moeten downloaden: www.test.com/pages/download?downloadid=5
En waar het bestand staat is
www.test.com/uploads/1419360519.png
Die 5 bij link is getal uit DB en daar staat ook de URL in voor de download van het bestand.
In dit voorbeeld is het ook een PNG, maar het kan ELK soort bestand zijn.
Hopelijk snappen jullie wat ik bedoel


Toegevoegd:
Het is me al beetje gelukt maar ik heb nu een volgend probleem, dit is mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    $dir = '../../uploads/'; //geef een map aan met eindslash (. voor deze map)
    $bestand = substr($file_url, 14);
echo $dir.$bestand;

            if(file_exists($dir.$bestand)) //en ?bestand=.. is ook nog eens een bestaand bestand is
            {
                header('Content-type: Application/octet-stream'); //zet de header dat het bestand gedownload moet worden
                                                                  //en dat het dus niet in de browser afgespeeld kan worden
    
                header('Content-Disposition: attachment; filename='.$bestand); //geef aan welk bestand gedownload moet worden
                    ob_clean();
                    flush();
                    readfile($dir.$bestand);
                    exit;
            }
            else //als het bestand niet bestaat
            {
                echo 'bestand bestaat niet'; //echo dat
            }
    
} else {
    echo "Er is iets fout gegaan, probeer het opnieuw.";
}


Maar als ik dat doe echo't hij het bestand zelf, daarmee bedoel ik dat ik dit krijg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
PNG  IHDRV@\sRGBgAMA a pHYsodIDATx^gazmM&,`lr(@DE@%r3s749}oh$mihUWWWWO]r%K~vFmA .    ne]y]E 2+eUw_we(|"WRku}@wu#_'{Hwc3y=F)=@#-O3zwAMOLMOb7?n[m/> 8@h}[x~o_2Ncuw @@"\N?<{9-yI2,  dUF_= {_9<RWa/uiu!^p-ku{Mp5{-yMocZK=rZcw'6 'x-,uO^{}|_P}hGzFFJ8=9,/$b |[nHx zxM~n _Yt;_=S.s)[w[Fo-@//{qG[_<#Z]~PAu#|T^ {I _=*#W# _NK=!{-WXQR UvU~Uj2I1V5Id_K%{#E*K@*VfCXo*WWWJX_53o$a"{;[vvv~Mn} 
Gewijzigd op 02/01/2015 08:19:17 door Kevin J
 
PHP hulp

PHP hulp

05/05/2024 09:05:15
 
Eddy E

Eddy E

02/01/2015 08:59:36
Quote Anchor link
Probeer eens: base64_encode($dir.$bestand);
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 09:24:29
Quote Anchor link
Op regel drie doe je een echo en god weet wat er nog boven dit stukje code in werkelijkheid wordt ge-echo-t. Dit levert dan altijd corrupte data op. Geen enkele output mag plaatsvinden voor je je headers verstuurt.
Wat is dat voor gedoe met ob_clean()? Als ik dat lees gaan mijn haren al overeind staan.
 
Kevin J

Kevin J

02/01/2015 09:45:57
Quote Anchor link
Die echo weggehaald is nogsteeds, daarboven word 0,0 ge-echo't
en die ob_clean() had ik van tutorial want ik weet 0,0 van iets downloaden en dus ging het google
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 10:03:11
Quote Anchor link
Wat doet flush(); ? ook weg er mee...

Dit is in principe voldoende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$path
= '/compleet/pad/naar/bestand.txt';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($path) . "\"");
readfile($path);
?>
Gewijzigd op 02/01/2015 10:04:07 door Frank Nietbelangrijk
 
Kevin J

Kevin J

02/01/2015 10:06:40
Quote Anchor link
Frank geprobeerd krijg zelfde probleem, weer al die gekke tekens.
ik geef wel het volledige bestand:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
include '../../include/config.php';
if (!isset($_SESSION['login'])) {
    echo "Zou u willen inloggen voordat u dit bestand download.</div></div>";
    exit;
}

$vote = $_REQUEST['vote'];
if ($vote == 0) {
    echo "<B>Bestand word niet gedownload.</b>";
}
elseif ($vote == 1) {
$did = $_SESSION['did'];
$sql3 = mysqli_query($db, "SELECT * FROM downloads WHERE id='$did'");
$data22 = mysqli_fetch_array($sql3);
$file_url = $data22['url'];


$path = $file_url;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($path) . "\"");
readfile($path);
}

?>
Gewijzigd op 02/01/2015 10:09:05 door Kevin J
 
- Ariën  -
Beheerder

- Ariën -

02/01/2015 10:14:19
Quote Anchor link
Is het niet de Byte-order-mark (B-O-M) die in de weg ligt?

Kopieer de code eens in notepad/kladblok en sla het daarin eens opnieuw op?
 
Kevin J

Kevin J

02/01/2015 10:20:32
Quote Anchor link
Waar zie jij Byte-order-mark (B-O-M) staan?

Toevoeging op 02/01/2015 10:23:41:

Ik heb even wat gestest ik heb het volgende weg gehaald:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($path) . "\"");


Doet hij het zelfde geen foutmelding of iets, dus hij doet alleen readfile uitvoeren, en outputen op page
 
- Ariën  -
Beheerder

- Ariën -

02/01/2015 10:23:56
Quote Anchor link
Als je vreemde output hebt waarvan niet te verklaren is waar het vandaan komt in de code, dan is dat in sommige gevallen de B-O-M. Die zie je niet altijd.
Gewijzigd op 02/01/2015 10:24:59 door - Ariën -
 
Kevin J

Kevin J

02/01/2015 10:26:06
Quote Anchor link
Okay en hoe kan ik dan het beste doen?
 
- Ariën  -
Beheerder

- Ariën -

02/01/2015 11:11:21
Quote Anchor link
Zie mijn post van 10:14.
 
Kevin J

Kevin J

02/01/2015 12:13:01
Quote Anchor link
Dat zag ik maar welke code bedoel je?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 12:36:20
Quote Anchor link
Alle PHP bestanden die geladen worden

Dus iig je script die je hierboven laat zien en config.php
Gewijzigd op 02/01/2015 12:37:01 door Frank Nietbelangrijk
 
Kevin J

Kevin J

02/01/2015 12:40:38
Quote Anchor link
Zoveel spannends is dat niet

download2.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
include '../../include/config.php';
if (!isset($_SESSION['login'])) {
    echo "Zou u willen inloggen voordat u dit bestand download.</div></div>";
    exit;
}

$vote = $_REQUEST['vote'];
if ($vote == 0) {
    echo "<B>Bestand word niet gedownload.</b>";
}
elseif ($vote == 1) {
$did = $_SESSION['did'];
$sql3 = mysqli_query($db, "SELECT * FROM downloads WHERE id='$did'");
$data22 = mysqli_fetch_array($sql3);
$file_url = $data22['url'];


$path = $file_url;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($path) . "\"");
readfile($path);
}

?>


die $_REQUEST['vote'] is 1 of 0

en in de config staat alleen de mysql_connect met variable $db

En voor de duidelijkheid ik probeer nu een PNG bestand op te roepen
Gewijzigd op 02/01/2015 12:41:06 door Kevin J
 
- Ariën  -
Beheerder

- Ariën -

02/01/2015 12:47:20
Quote Anchor link
Al geprobeert de code even opnieuw over te nemen in kladblok/notepad? Die negeert het B-O-M character.
Sommige editors, zoals Notepad++ kunnen ze zelf ook verwijderen door hem expliciet op te slaan als de jusite encoding zonder B-O-M.
 
Kevin J

Kevin J

02/01/2015 12:49:31
Quote Anchor link
ik gebruik subliem text editor.
maar geprobeerd zojuist en het werkt niet
 
- Ariën  -
Beheerder

- Ariën -

02/01/2015 13:05:47
Quote Anchor link
Apart, maar notepad/kladblok dus ook al geprobeerd?

Ikzelf gebruik nog wat extra headers die hier beschreven staan:
http://php.net/manual/en/function.readfile.php
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 13:15:29
Quote Anchor link
Als je nou puur en alleen mijn voorbeeldje pakt en de rest van je code (regel 1 tm 15) er uit laat. En je maakt van $path = even een willekeurig bestaand bestand, doet ie het dan ook niet goed?
 
Kevin J

Kevin J

02/01/2015 15:31:44
Quote Anchor link
Dan werkt hij wel, kan Dynamic Pages het blokkeren ofzo?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/01/2015 15:37:33
Quote Anchor link
regel voor regel even je script weer aanvullen en bij elke regel kijken of het nog lukt...
 
Kevin J

Kevin J

02/01/2015 19:10:31
Quote Anchor link
Mijn Dynamic Pages laat alles buggen, weet iemand een manier hoe ik dan kan laten fixen? Want blijkbaar doet mijn Dynamic Pages het bestand outpute in de content terwijl dat niet moet.
Iemand oplossing?
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.