document uit database tonen
Ik ben aan het proberen om een document te tonen dat in een database is opgeslagen.
Nadat er op een link geklikt is wordt er een javascript gestart dat als ingangsvariabele een id meekrijgt
Met dit id wordt in een ajax-aanroep het aplicatie type, de bestandsgrootte en inhoud van het document opgehaald.
Bij de .done van ajax wil ik het bestand tonen waarbij ik nu onderstaande code gebruik :
Wanneer ik nu de link aanklik wordt MS-Word gestart, in het document staat de bestandsgrootte.
Ik heb nu uren zitten Googlen maar krijg het niet voor elkaar om de document inhoud te tonen.
Wie helpt mij dit laatste stapje te nemen ?
Nadat er op een link geklikt is wordt er een javascript gestart dat als ingangsvariabele een id meekrijgt
Met dit id wordt in een ajax-aanroep het aplicatie type, de bestandsgrootte en inhoud van het document opgehaald.
Bij de .done van ajax wil ik het bestand tonen waarbij ik nu onderstaande code gebruik :
Code (php)
1
2
2
$soort = antw['soort'].split(':')[1];
$w = window.open('data:' + $soort + ',' + antw['omvang'] + ',' + antw['inhoud']);
$w = window.open('data:' + $soort + ',' + antw['omvang'] + ',' + antw['inhoud']);
Wanneer ik nu de link aanklik wordt MS-Word gestart, in het document staat de bestandsgrootte.
Ik heb nu uren zitten Googlen maar krijg het niet voor elkaar om de document inhoud te tonen.
Wie helpt mij dit laatste stapje te nemen ?
als je nou ergens geen ajax voor moet gebruiken dan is het wel voor het downloaden van bestanden. Probeer het maar eens zonder ajax.
Gewijzigd op 03/03/2015 00:10:19 door Frank Nietbelangrijk
Dat zou ik heel graag willen maar ik zie niet in hoe ik aan de benodigde gegevens moet komen nadat er op een link is geklikt in een HTML pagina.
Het enige dat ik heb is een ID aan de hand waarvan ik de gegevens uit een database kan halen.
Wanneer het aan mij lag zou ik het bestand zelfs niet in de database zetten maar ik kan dit niet zelf beslissen.
Het enige dat ik heb is een ID aan de hand waarvan ik de gegevens uit een database kan halen.
Wanneer het aan mij lag zou ik het bestand zelfs niet in de database zetten maar ik kan dit niet zelf beslissen.
Je hebt echt een (binair) bestand in je database zitten? Als blob? Of als base64 geëncodeerd bestand?
Je zou met behulp van PHP dit bestand naar "output" kunnen sturen, voorzien van een of meer headers (Content-Type, Content-Length etc.), die het type bestand bevat.
inspiratie
Of ik moet je verkeerd begrijpen.
Je zou met behulp van PHP dit bestand naar "output" kunnen sturen, voorzien van een of meer headers (Content-Type, Content-Length etc.), die het type bestand bevat.
inspiratie
Of ik moet je verkeerd begrijpen.
Het bestand is opgeslagen als een blob. Is nu een Word document maar kan net zo goed een PDF zijn.
Ik heb het bestands-type en de bestandsgrootte in hetzelfde record staan in de database.
Geloof het of niet maar ik ben al minstens 8 uur aan het Googlen geweest om een oplossing te vinden voor dit probleem dus een link naar Google is in dit geval even niet de oplossing denk ik.
Ik geef er de voorkeur aan om dit soort problemen "gewoon" zelf op te lossen maar in dit geval loop ik gewoon vast.
Ik ga er nog eens even over nadenken hoe ik dit verder/anders aan kan pakken.
Ik heb het bestands-type en de bestandsgrootte in hetzelfde record staan in de database.
Geloof het of niet maar ik ben al minstens 8 uur aan het Googlen geweest om een oplossing te vinden voor dit probleem dus een link naar Google is in dit geval even niet de oplossing denk ik.
Ik geef er de voorkeur aan om dit soort problemen "gewoon" zelf op te lossen maar in dit geval loop ik gewoon vast.
Ik ga er nog eens even over nadenken hoe ik dit verder/anders aan kan pakken.
bestuur eerst dit voorbeeld van php.net eens.
- opslaan en naast het php bestand een pdf plaatsen. Naam wijzigen in Original.pdf en php bestand oproepen vanuit de browser.
Voila
Code (php)
- opslaan en naast het php bestand een pdf plaatsen. Naam wijzigen in Original.pdf en php bestand oproepen vanuit de browser.
Voila
Gewijzigd op 03/03/2015 01:07:37 door Frank Nietbelangrijk
Ik zou nog op een onclick in javascript een redirect uit kunnen voeren naar een php-script om bovenstaand uit te voeren. De enige reden om dit document in de database te zetten is veiligheid, 6 andere, minder kritische, bestanden worden gewoon in mappen opgeslagen.
Om diezelfde reden wil ik dan ook geen GET variabele mee gaan geven met de aanroep van het PHP-bestand aangezien dit te gemakkelijk gemanipulerd kan worden.
Een andere optie zie ik nog om de ID in een session-variabele te zetten, ik zie alleen niet hoe ik deze in JS kan schrijven en vervolgens in PHP uit kan lezen
Om diezelfde reden wil ik dan ook geen GET variabele mee gaan geven met de aanroep van het PHP-bestand aangezien dit te gemakkelijk gemanipulerd kan worden.
Een andere optie zie ik nog om de ID in een session-variabele te zetten, ik zie alleen niet hoe ik deze in JS kan schrijven en vervolgens in PHP uit kan lezen
Quote:
De enige reden om dit document in de database te zetten is veiligheid
Gevoelige content kun je prima in een "prive" content dir zetten buiten je webroot. Je serveert deze bestanden via een PHP-scriptje, en de administratieve informatie hiervan kun je in een database kwijt (locatie, naam, (mime)type).
Quote:
Om diezelfde reden wil ik dan ook geen GET variabele mee gaan geven met de aanroep van het PHP-bestand aangezien dit te gemakkelijk gemanipulerd kan worden.
En als je je bestanden toch via een PHP-script serveert, kun je het opvragen van een bestand ook onderwerpen aan controles zoals toegangsrechten of -rollen.
Gewijzigd op 03/03/2015 12:09:27 door Thomas van den Heuvel
Gewoon inderdaad je bestanden buiten de webroot plaatsen.
Database tabel aanmaken met
-id
-filename
-filetype
-roles ( Welke rol moet een gebruiker hebben om het te kunnen downloaden )
en dan kun je de pagina als hierboven aanroepen met download.php?id=2
Waarmee je dan het bestand met id 2 gaat downloaden ALS je ingelogd bent EN de juiste rol (of machtingen) hebt.
een GET var is dus prima om aan te geven welk bestand je wilt downloaden.
Database tabel aanmaken met
-id
-filename
-filetype
-roles ( Welke rol moet een gebruiker hebben om het te kunnen downloaden )
en dan kun je de pagina als hierboven aanroepen met download.php?id=2
Waarmee je dan het bestand met id 2 gaat downloaden ALS je ingelogd bent EN de juiste rol (of machtingen) hebt.
een GET var is dus prima om aan te geven welk bestand je wilt downloaden.
En een manier om in de database al te controleren of iemand de juiste rol(id's) heeft: shameless selfplug.




