afbeeldingen downloaden werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gezocht: Ervaren VB6 developer met C# ambitie!

Bedrijfsomschrijving Dit bedrijf is een vooraanstaande softwareleverancier die gespecialiseerd is in het ontwikkelen van software pakketten voor autoschade herstel bedrijven. De software wordt gebruikt door meer dan de helft van alle autoschade herstel bedrijven in Nederland. Het team van professionals is op zoek naar getalenteerde collega developers die hun vaardigheden willen inzetten om het bedrijf te laten groeien. Functieomschrijving Voor dit bedrijf zoek ik een ervaren VB6 / VB.NET developer met interesse om op termijn verder te gaan in C#. In deze functie ben je verantwoordelijk voor het onderhouden van de bestaande softwarepakketten. Een deel van de code is nog

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

.NET Developer te Naarden

Bedrijfsomschrijving Voor mijn klant ben ik op zoek naar een .NET Developer om het huidige team te komen versterken. Deze organisatie bevindt zich in de logistieke sector, en zij hebben een eigen ERP systeem ontwikkeld dat zij inzetten ter optimalisatie van de logistieke processen van haar eindklanten. Deze organisatie bestaat inmiddels al ruim 20 jaar, waarbij zij een duidelijke missie hebben, namelijk: het werk van de eindklant makkelijker maken door de systemen die zij leveren. Ze werken over heel de wereld, wat deze organisatie een echte internationale speler maakt. Binnen de organisatie kenmerken ze zich door een dynamische en professionele

Bekijk vacature »

Senior Fullstack Developer (GOLang, TypeScript)

Bedrijfsomschrijving Our client is one of the large worldwide accounting firms. Functieomschrijving We are looking for a senior (all-round) developer (Project On Demand / Tax Technology) Uses as much as possible technology in support of the development process: Git, Jenkins, Docker, npm, skaffold, helm, etc. We are looking for a real hands-on developer; ie not a team lead or other managerial-style role; Acts with integrity both internally and externally and takes personal responsibility in this respect; Curious about the developments within their field and driven to make a difference with the team; Able to empathize with colleagues and stakeholders and

Bekijk vacature »

Fullstack developer

Functie omschrijving We are looking for a dutch native speaker Wil jij werken als Senior Developer en werken aan een applicatie die duizenden marketingcampagnes automatisch aanstuurt? Dit is je kans! Kom werken voor onze opdrachtgever en in deze rol zul je veel vrijheid en verantwoordelijkheid krijgen om gezamenlijk de applicatie naar een hoger plan te tillen. Wat ga je verder doen: Optimaliseren, beheren en uitbreiden van onze applicatie; Het bouwen van aansluitingen op de systemen van partners middels API’s; Meedenken over de technische/ontwikkel-standaarden; Proactief verbeterpunten voorstellen. Bedrijfsprofiel Het is een organisatie die met een team van verschillende developers én marketeers

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »

Software Developer / .NET / Azure

Dit ga je doen Als Lead .NET Software Developer zal je je bezig houden met: Het vertalen van bedrijfswensen naar een technische roadmap; Uitwerken van nieuwe architectuur / designs; Het team aansturen en motiveren; Toezien op de kwaliteit van de code; Mee ontwikkelen van nieuwe features en applicaties. Hier ga je werken Deze organisatie is op dit momenteel marktleider in het ontwikkelen van productielijnen voor de voedselindustrie en heeft een wereldwijd klantnetwerk. Binnen deze organisatie is het team van software developers dagelijks bezig met het ontwikkelen van maatwerk oplossingen om alle productiemachines aan te sturen, maar ook bedrijf kritische applicaties

Bekijk vacature »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

SQL ontwikkelaar

Functieomschrijving Voor een gave werkgever in regio Breda zijn wij per direct op zoek naar een SQL ontwikkelaar/ functioneel consultant. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Je test de ontwikkelde oplossingen om er zeker van te zijn dat deze voldoen aan de functionele specificaties en de behoeften van de organisatie; Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Je stelt op

Bekijk vacature »

Frontend Developer

Dit ga je doen Door ontwikkelen van het online platform Deel uitmaken van verschillende ontwikkelteams Meedenken over UI/UX vraagstukken Uitdragen van Front-end binnen de organisatie Hier ga je werken Deze organisatie, gevestigd in de omgeving van Amsterdam, is een grote onderwijs instelling met meerdere vestigingen en een groot aantal studenten. Zo telt deze organisatie +/- 35.000 gebruikers. Bij deze organisatie staat jouw ontwikkeling centraal en is er veel ruimte voor eigen initiatieven. In samenwerking met jouw team ga jij de online omgeving verder ontwikkelen. In de rol van Front end Developer zal jij 50% van jouw tijd werken in het

Bekijk vacature »

Ervaren Full stack developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house functie bij een bedrijf met enorme groeipotentie? Ben jij op zoek naar een nieuwe uitdaging vol afwisseling en gezelligheid? Dan ben je bij dit bedrijf aan het juiste adres! Wij zijn in omgeving Breda op zoek naar een ervaren full stack developer. Je gaat werken voor een zeer gewilde werkgever met goede arbeidsvoorwaarden. Je krijgt een plekje in het jonge IT team, work hard, play hard is hier duidelijk het motto! Jouw werkzaamheden zien er als volgt uit: Jij bent verantwoordelijk voor het ontwerpen en bouwen van webapplicaties. Je bent

Bekijk vacature »

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

Back-end Developer

Functieomschrijving Voor een erkende werkgever in de regio van Middelburg zijn wij op zoek naar een enthousiaste PHP / Symfony Developer. Een ambitieus persoon die het gemotiveerde development team komt versterken met het realiseren van nieuwe en complexe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor professionele groei? Dit ga je doen: Je bent verantwoordelijk voor de beheer en ontwikkeling van de serviceportal in Symfony en de webshops in de tweede versie van Magento; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

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

06/05/2024 19:01:50
 
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.