afbeeldingen downloaden werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Implementatie specialist

Standplaats: Honselersdijk Aantal uren: 32 – 40 uur Opleidingsniveau: HBO werk- en denkniveau Ben jij de implementatie expert die onze klanten helpt bij het integreren van de Greencommerce software? Ben jij daarnaast communicatief sterk, denk jij graag in verbeteringen en heb je ervaring met ICT? Lees dan snel verder! Bedrijfsinformatie Jem-id is een grote speler op het gebied van software ontwikkeling. Zo zijn wij continu bezig met het ontwikkelen van de meest innovatieve software voor de AGF- en sierteeltsector. We creëren oplossingen die er toe doen en verbinden klanten niet alleen op technisch vlak, maar zoeken ook de verbinding in

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij een team met 12 programmeurs. Jullie zijn verantwoordelijk voor het huidige platform van deze organisatie. Als team werken jullie in tweewekelijkse sprints en starten jullie iedere dag met een stand-up. Jij werkt samen met jouw team aan het uitbreiden van het huidige platform door middel van nieuwe features. Daarnaast zorg jij er samen met jouw team voor dat het platform veilig is en gebruiken jullie de nieuwste technieken om deze veiligheid te waarborgen. Zo maken jullie gebruik van C# .NET, .NET Core, React, Azure, Kubernetes, ASP.NET, MVC. Jij gaat aan het werk in

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

Bekijk vacature »

Programmeur / Developer

Voor een familiebedrijf in Doetinchem, actief in de machinebouw voor de food-sector, zijn wij op zoek naar een programmeur / developer. In deze functie ben je werkzaam in een team van 5 medewerkers. Je werkzaamheden bestaan onder andere uit het verhelderen van requirements vanuit de opdrachtgever, de klant en de afdeling ontwikkeling. Je verricht haalbaarheidsstudies en werkt specificaties uit die je afstemt met de opdrachtgever. Je ontwerpt design in software en stemt af met je collega's. De huidige vision-systemen zijn geschreven in C software, welke draait op een CUDA platform. Je schrijft en codeert software en zal gaan testdraaien. Tot

Bekijk vacature »

Java/Kotlin Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

C#.NET ontwikkelaar

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een C#.NET ontwikkelaar. Je bent verantwoordelijk voor het ontwikkelen van dashboards, webapplicaties en apps voor de eigen IOT-oplossingen. Samen met een vooruitstrevend team van ontwikkelaars en engineers krijgen jullie de opdracht om de sensoren in de apparatuur te scannen en vervolgens de data om te zetten in belangrijke inzichten voor de klanten. Taken en verantwoordelijkheden: Heb jij ideeën over nieuwe technieken die jullie kunnen implementeren? Hier wordt echt naar je geluisterd en gekeken of jouw idee daadwerkelijk ingezet kan worden; Je gaat aan de slag met de

Bekijk vacature »

Back End Developer .NET

Dit ga je doen Ontwikkelen in C# .NET en werken aan nieuwbouw, uitbouw en onderhoud van de software (die communiceren met 68.000 sensoren, waardoor er meerdere miljoenen berichten per uur verwerkt worden); Samenwerken in Scrum Teams; Meewerken aan verschillende, uitdagende projecten; Werken met nieuwe technologieën en vrijheid krijgen om jezelf te ontwikkelen en door te groeien. Hier ga je werken Je komt als Developer te werken bij een organisatie die gespecialiseerd is in software die real-time wordt gebruikt. De software constateert waar werk moet worden uitgevoerd en de chauffeurs worden met een andere applicatie hierop geattendeerd. Ook wordt er direct

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van bromen snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

Bekijk vacature »

Back-end developer (Magento2)

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij toe aan een nieuwe uitdaging en werk je graag en goed in C++ en C#? Dan zijn we op zoek naar jou! Dit bedrijf is dé specialist op het gebied van automatiseringssoftware voor een specifieke branche en ze zijn per direct op zoek naar versterking in hun development team. Wat jij gaat doen binnen jouw rol als C++ ontwikkelaar; Je vertaalt de wensen van gebruikers naar een functioneel ontwerp. Je houdt je bezig met het ontwerpen, programmeren en testen van product aanpassingen. Je gaat nieuwe product releases implementeren in de projectteams. Je gaat de effecten van nieuwe

Bekijk vacature »

Front-end developer gezocht

Functie Je komt in een team met ambitieuze developers die de passie voor Front-End met jou delen. Samen ga je aan de slag met leuke en leerzame opdrachten. Het team heeft een eigen budget en financiën en zij bepalen zelf hoe dat besteed en investeert wordt. Je gebruikt tools als JavaScript, Node.js, React, Angular, Typescript en Vue.js wanneer je werkt aan de opdrachten. Daarnaast zul je veel leren van je collega’s en gezamenlijk een leuke tijd doorbrengen tijdens activiteiten zoals wintersport, hackatons en conferentiebezoeken. Je krijgt niet alleen de mogelijkheid Front-End te ontwikkelen, maar ook vooral jezelf. Dit kan behaald

Bekijk vacature »
Marco Eilander

Marco Eilander

28/05/2016 12:35:06
Quote Anchor link
Hallo,


Met dit script probeer ik afbeeldingen te downloaden, maar als ik ze open, krijg ik een foutmelding en worden ze niet weergegeven. Ik krijg alleen de melding "Dit bestand kan niet worden geopend.".

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
        header ('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header ('Content-Description: File Transfer');
        header ('Content-Type: application/octet-stream');
        header ('Content-Length: ' . filesize(__DIR__ .'/opslag/'.$_GET['bestand']));
    header('Content-Type: image/png');        
    header("Content-Disposition: attachment; filename=".$_GET['bestand']."");

?>
 
PHP hulp

PHP hulp

05/05/2024 08:07:54
 
Ben van Velzen

Ben van Velzen

28/05/2016 13:23:41
Quote Anchor link
Waar is de inhoud van je bestand? Heb je dat voor het voorbeeld weggelaten of ben je het gewoon vergeten?
 
Marco Eilander

Marco Eilander

28/05/2016 14:13:07
Quote Anchor link
Ben van Velzen op 28/05/2016 13:23:41:
Waar is de inhoud van je bestand? Heb je dat voor het voorbeeld weggelaten of ben je het gewoon vergeten?


Dan is dat dus het probleem. :P
Hoe krijg ik de inhoud?
 
Ben van Velzen

Ben van Velzen

28/05/2016 14:18:22
Quote Anchor link
Voeg dit eens toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
fpassthru(__DIR__ . '/opslag/' . $_GET['bestand']);
?>


Het is overigens aan te bevelen om niet direct op de inhoud van $_GET['bestand'] te vertrouwen, het is in deze opzet een koud kunstje om ieder gewenst bestand op je systeem op te vragen. Bijvoorbeeld de inhoud van index.php, welke weer verwijst naar configuraties e.d.
 
Marco Eilander

Marco Eilander

28/05/2016 21:11:02
Quote Anchor link
Ben van Velzen op 28/05/2016 14:18:22:
Voeg dit eens toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
fpassthru(__DIR__ . '/opslag/' . $_GET['bestand']);
?>


Het is overigens aan te bevelen om niet direct op de inhoud van $_GET['bestand'] te vertrouwen, het is in deze opzet een koud kunstje om ieder gewenst bestand op je systeem op te vragen. Bijvoorbeeld de inhoud van index.php, welke weer verwijst naar configuraties e.d.


Helaas. Inhoud blijft leeg.
 
Ben van Velzen

Ben van Velzen

28/05/2016 21:13:37
Quote Anchor link
zet je error reporting eens aan en haal de headers weg, wat krijg je dan?
 
Marco Eilander

Marco Eilander

28/05/2016 22:58:08
Quote Anchor link
Ben van Velzen op 28/05/2016 21:13:37:
zet je error reporting eens aan en haal de headers weg, wat krijg je dan?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: fpassthru() expects parameter 1 to be resource, string given in /home/blablabla/domains/mijndomein.nl/public_html/upload/download.php on line 4


Ik neem aan, dat het gaat om dit stukje : '/opslag/'
Gewijzigd op 28/05/2016 23:05:21 door Marco Eilander
 
Joakim Broden

Joakim Broden

29/05/2016 12:10:29
Quote Anchor link
Marco Eilander op 28/05/2016 12:35:06:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Length: ' . filesize(__DIR__ .'/opslag/'.$_GET['bestand']));
    header('Content-Type: image/png');        
    header("Content-Disposition: attachment; filename=".$_GET['bestand']."");
?>


Bij de header 'Content-Length' zit het bestand in de map 'opslag'. Bij de header 'Content-Disposition' niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    header("Content-Disposition: attachment; filename=".__DIR__ ."/opslag/".$_GET['bestand']."");
?>
Gewijzigd op 29/05/2016 12:11:13 door Joakim Broden
 
Ben van Velzen

Ben van Velzen

29/05/2016 12:32:02
Quote Anchor link
En dat is niet relevant. De content disposition mag zelfs geen mapnamen hebben. Doe dit eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Length: ' . filesize(__DIR__ .'/opslag/'.$_GET['bestand']));
    header('Content-Type: image/png');        
    header("Content-Disposition: attachment; filename=".$_GET['bestand']);
    readfile(__DIR__ . '/opslag/' . $_GET['bestand']);
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

29/05/2016 14:35:44
Quote Anchor link
My 2c:
- in bestandsnamen kunnen spaties zitten, zet daartoe dubbele quotes om filename, oftewel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Content-Disposition: attachment; filename="'.$fileName.'"');
?>

- voeg een exit-statement aan het einde toe om te voorkomen dat er verder nog output geproduceerd wordt wat het bestand mogelijk kan corrumperen
 
Marco Eilander

Marco Eilander

29/05/2016 18:32:58
Quote Anchor link
Ik denk, dat het toch op één of ander manier corrupt wordt.
Er komt nu wel data in het bestand te staan als ik het open, maar ik blijf de melding krijgen, dat het bestand niet geopend kan worden in de windows 10 app -> Foto's.

Dit heb ik nu:

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
25
26
<?php
    $filename
= $_GET['bestand'];
    $ext = explode(".",$filename);
    if($ext[1] == 'png'){
        header('Content-Type: image/png');
    }

    if($ext[1] == 'jpg'){
        header('Content-Type: image/jpg');
    }

    if($ext[1] == 'jpeg'){
        header('Content-Type: image/jpeg');
    }
    
    if($ext[1] == 'gif'){
        header('Content-Type: image/gif');
    }

    if($ext[1] == 'bmp'){
        header('Content-Type: image/bmp');
    }
    
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Length: ' . filesize(__DIR__ .'/opslag/'.$filename));      
    header('Content-Disposition: attachment; filename="'.$filename.'"');
    readfile(__DIR__ . '/opslag/' . $filename);
    exit();
?>


UPDATE

Ik had notepad++ op UTF-8 staan, nu ik het op ANSI heb gezet, werkt het! :)
Gewijzigd op 29/05/2016 18:39:06 door Marco Eilander
 
Thomas van den Heuvel

Thomas van den Heuvel

30/05/2016 00:34:19
Quote Anchor link
Hmm...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$ext
= explode(".",$filename);
// ...
if($ext[1] == 'png'){ // altijd tweede positie $ext[1]?
?>

En wat als je foto nu dit.is.een.test.jpg heet, wat een volledig valide naam is?

De extensie van een bestand is doorgaans alles wat na de laatste punt in de bestandsnaam komt.

Mogelijke verbetering, gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function getExtension($in) {
    return substr($in, strrpos($in, '.') + 1);
}

?>
 
Marco Eilander

Marco Eilander

30/05/2016 10:47:30
Quote Anchor link
Dat gebeurt niet. ;)
Alle bestanden worden opgeslagen met een willekeurig reeks karakters a-z, A-Z, 0-9 in mijn database.
Mogelijkheid om die bestanden van naam te veranderen is niet mogelijk.
 
Ben van Velzen

Ben van Velzen

30/05/2016 11:01:06
Quote Anchor link
De mogelijkheid om een andere bestandsnaam op te vragen blijft er altijd, en daarmee blijft het gevaarlijk om het zo te doen.
 
Marco Eilander

Marco Eilander

30/05/2016 13:10:32
Quote Anchor link
Er gebeurt niks gevaarlijks, wanneer het bestand niet bestand niet bestaat, downloaden ze gewoon een leeg bestand.
Daarnaast wordt er ook nog gecontroleerd voor het downloaden, of het bestand wel bestaat, zo niet, dan worden ze doorgestuurd naar de index.
 
Ben van Velzen

Ben van Velzen

30/05/2016 14:03:36
Quote Anchor link
Goed, geef mij maar eens een link naar waar dit online staat, dan zal ik je even demonstreren hoe dat te misbruiken is ;-)
Kort gezegd, als je op deze manier werkt gaat het vroeg of laat helemaal fout, en als je betalende klanten hebt gaat geen aansprakelijkheidsverzekering je nog redden. Je bouwt nu tegen beter weten in een hele mooie backdoor in.
Gewijzigd op 30/05/2016 14:06:23 door Ben van Velzen
 



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.