Downloadscript beschadigt files

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Business Intelligence ontwikkelaar (Microsoft tool

Bedrijfsomschrijving De organisatie is ruim 80 man groot en is aanbieder van een zeer groot en divers aanbod van consumentenproducten in Nederland. Oorspronkelijk is het een familiebedrijf die is opgericht in 2001. De IT afdeling is ruim 15 man groot. Binnen de organisatie heerst een erg open en informele werksfeer. Functieomschrijving Door toenemende vraag vanuit de business naar management informatie is de organisatie momenteel opzoek ter uitbreiding naar een ervaren Microsoft Business Intelligence ontwikkelaar. In deze functie ben je nauw betrokken binnen het gehele BI traject; van informatie analyse, datawarehouse ontwikkeling/beheer tot de bouw van rapportages. Het betreft een zeer

Bekijk vacature »

Full Stack Developer / Clojure / Functional Progra

2021-06-03 iSense Full Stack Developer / Clojure / Functional Programming / React Are you an experienced (medior / senior) Full-stack Developer who likes working on a state-of-the-art platform with techniques like Clojure and React? Then this is the vacancy for you! ISDR49939 Company For our client, a modern and ambitious company in the Eindhoven region, we're looking for an experienced Full-stack Developer. The company is expanding rapidly after launching their product about 2 years ago. You'd be contributing to their ever expanding, world-wide used content platform with enormous amounts of data and big files. With your team, you're working on

Bekijk vacature »

Android Software Developer / Atlassian

Over het bedrijf: Wij zijn een grote speler binnen app development. Ben jij een ervaren Android Developer? Ben je een expert met Android architectuur? Vaste baan: Android Software Developer Kotlin 2.700 - 4.300 Android Developer Op dit moment zijn we een scale-up. We zijn een sterke speler binnen app development en zijn hard op weg om marktleider te worden. Wij bieden verschillende opleidings- en ontwikkelingsmogelijkheden binnen ons bedrijf, waardoor je de kans krijgt om door te groeien. Daarnaast hebben we een laagdrempelige en gezellige bedrijfscultuur. Bij ons werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe

Bekijk vacature »

.NET Developer C# @ Amsterdam

2021-08-20 iSense .NET Developer C# Wil jij als .NET Developer bij deze organisatie in Amsterdam als kartrekker in een Scrum team fungeren en je helemaal uitleven in de backend met C#? Krijg jij een grote kick van veel verantwoordelijk en mogelijkheden in een .NET backend? Vindt jij het leuk requirements op te halen bij de business en deze te vertalen in concrete oplossingen? Dan past deze functie jou perfect! ISDR46635-3 Organisatie Als C# .NET Developer wordt je verantwoordelijk voor het ontwikkelen van applicaties voor belangrijkste product van deze organisatie. Dit product is een applicatie voor alles omtrent hypotheken. De programmeertaal

Bekijk vacature »

Full Stack .NET Developer @ Amersfoort

2021-07-12 iSense Full Stack .NET Developer Ben jij een gedreven Full Stack .NET Developer die zich thuis voelt binnen een toonaangevend softwarebedrijf, graag de diepte in duikt en zich ergens in wil vastbijten? Lees dan snel verder! ISVI49530 Organisatie Onze klant is een vooraanstaand softwarebedrijf in de regio Amersfoort. Ze leveren oplossingen in de cloud (SaaS) aan meer dan 2 miljoen gebruikers. Dagelijks ondersteunt hun software 2000 klanten door middel van verschillende HR-oplossingen. Dit doen zij samen met 1000 collega’s. Zelf kom jij te werken in een klein, hecht en gedreven team bestaande uit zes collega’s. Samen met dit team

Bekijk vacature »

Datawarehouse specialist / ETL Ontwikkelaar @ Rott

2021-04-12 iSense Datawarehouse specialist / ETL Ontwikkelaar Datawarehouse ontwikkelaar / ETL ontwikkelaar / DWH ISRA49558 Nieuw Organisatie Onze klant is een semi overheidsinstelling. Ze zijn bezig met het bouwen van een nieuwe BI omgeving. Ze hebben onderzocht hoe het datalandschap en de informatievoorziening geprofessionaliseerd kan worden. Als DWH Ontwikkelaar kun jij hier een belangrijk rol in gaan spelen over hoe je het verder gaat uitvoeren. Het is een informele organisatie met een goede werksfeer. De mensen die er werken zijn ambitieus en werken met de nieuwste technieken. Ben jij toe aan een nieuwe uitdaging als datawarehouse ontwikkelaar waar jij kunt

Bekijk vacature »

Python Fullstack Ontwikkelaar / React

Over het bedrijf: Wij bouwen web-apps. Wil jij apps ontwikkelen? Heb jij ervaring met Ruby? Vaste Baan: Python Fullstack Ontwikkelaar Node.js 2.800 - 4.500 Full Stack Developer Wij zijn een studio die nieuwe bedrijven ontwikkelt en introduceert. Wij ontwikkelen innovatieve producten, systemen en diensten en bouwen vervolgens teams op om ze in bedrijven te schalen. Bij ons werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Wij staan open voor elke nieuwe trend. Onze systemen zijn groot en ingewikkeld. Hou jij van diepgang en

Bekijk vacature »

Android Developer Full Stack / EMV

Bij welk bedrijf je gaat werken: Wij beheren een betaalplatform. Werk jij als android developer? Heb jij een bachelor's of master's degree in de IT? Vaste baan: Android Developer Full Stack Agile 3.000 - 5.000 Android Developer Bij ons werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Wij staan open voor elke nieuwe trend. Onze systemen zijn groot en ingewikkeld. Hou jij van diepgang en van een vaste werkkring waar je jaren werkt aan dezelfde krachtige software, dan zit je bij ons helemaal

Bekijk vacature »

.Net Developer IoT / Software

Voor wie je gaat werken: Wij zijn gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren .Net developer? Heb jij ervaring met het verbeteren en implementeren van .NET applicaties? Vaste baan: .Net Developer IoT Software 3.000 - 4.200 .Net Developer Wij zijn een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Wij zijn een veelzijdige organisatie. Je werkt voor onze eigen IT organisatie. We werken met moderne technologie en staan open voor innovatie. Wil jij bij de top specialisten horen? Ben jij

Bekijk vacature »

App ontwikkelaar / IoT / iOS en Android @ Arnhem

2021-06-18 iSense App ontwikkelaar IoT iOS en Android Wil jij als App ontwikkelaar aan de slag bij een organisatie die werkt met toonaangevende klanten? Wil jij helpen met het smart maken van hardware producten? Lees dan snel verder! ISVI50120 Organisatie De organisatie in de regio Arnhem is een specialist als het gaat om het ontwikkelen van intelligente apparaten of machines. Binnen de organisatie zijn zo'n 50 medewerkers werkzaam waarvan 97% een technische functie bekleedt. Voor verschillende klanten door heel Nederland ontwikkelen zij innovatieve producten. Hierin verzorgen zij zowel de elektronica als de embedded software en zijn ze ook in opbouw

Bekijk vacature »

Backend Developer PHP / Javascript

Voor wie je gaat werken: Wij maken kaartjes voor onze klanten. Wil jij werken als backend developer? Heb jij ervaring met PHP? Vaste baan: Backend Developer PHP Javascript 2.700 - 4.000 Backend Developer Wij zijn een frisse onderneming die actief is op de Nederlandse web-to-print markt, vooral als het gaat om wenskaarten. Ons bedrijf is regelmatig onderscheiden door haar innovativiteit en klantvriendelijkheid, wat we graag zo willen houden. Bij ons werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Wij staan open voor elke

Bekijk vacature »

Full Stack Java Developer - Infrastructure

Ben jij een ontwikkelaar die wil bijdragen aan de applicatie ontwikkeling van klanten die zich primair bezig houden met de vitale onderdelen van Nederland, zoals transport, weg, water, spoor en gas, water en licht? Lees dan verder! Wat ga je doen? Als Full Stack Java Ontwikkelaar draag je verantwoordelijkheid voor het gehele proces van het omzetten van wensen, problemen of vragen naar concrete oplossingen. Integratie, testen, vastleggen van kennis en beslissingen, problem management en automation zijn onderdeel van je takenpakket in zowel SAFE of DevOps gestuurde omgevingen als ook in omgevingen die nog werken volgens het traditionele waterval model. Als

Bekijk vacature »

Junior developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior developer bij Coolblue? Als Junior Developer ben je meteen vanaf de start onderdeel van een van de development teams. Omdat je jezelf graag nog verder wilt ontwikkelen, kijk je veel met je collega’s mee en volg je verschillende trainingen. Maar in de sprints pak je ook je eigen stories op, om meteen Coolblue iedere dag een beetje beter te kunnen maken. Ook junior developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind

Bekijk vacature »

Fullstack .NET DEVELOPER - GRADUATE PROGRAM @ Rand

2021-06-10 iSense Fullstack .NET DEVELOPER - GRADUATE PROGRAM Ben je onlangs afgestudeerd van een IT-opleiding of heb je nog maar weinig ervaring opgedaan? En wil je toch graag aan de slag als .NET Developer? Lees dan snel verder, want op 9 augustus 2021 starten wij weer met een graduate programma waarin jij jezelf kunt ontwikkelen tot een volwaardige Fullstack .NET Developer! ISLE50166 Locatie Randstad/Eindhoven Wat ga je doen tijdens het Fullstack .NET Developer Graduate Programma? In augustus krijg jij via de Experis Academy een unieke kans om jouw IT-carrière een kickstart te geven en jezelf te ontwikkelen tot Fullstack .NET

Bekijk vacature »

Sr Outsystems Ontwikkelaar ERP Javascript C# / C#

Wie wordt jouw werkgever?: Wij ontwikkelen ERP systemen. Ben jij een gedreven Outsystems Ontwikkelaar? Heb je kennis van C#? Vaste baan: Sr Outsystems Ontwikkelaar ERP C# 3.500 - 4.200 Senior Outsystems Ontwikkelaar Wij ontwikkelen ERP systemen voor bouworganisaties. Dit doen wij tegen de hoogst mogelijke kwaliteit. Werken bij ons betekent werken in een start-up omgeving met veel groei mogelijkheden. Doorleren wordt op prijs gesteld en gefaciliteerd. Daarbij geven we jou veel verantwoordelijkheden en mogelijkheden om eigen initiatieven uit te voeren. Bij ons werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als

Bekijk vacature »
Sam H

Sam H

29/07/2012 00:04:32
Quote Anchor link
Op mijn sites staan files die users zelf kunnen uploaden in een geheime map /uploads.
Maar als ze files downloaden lukt dit ook, maar vanaf de moment dat je ze opent zegt de pc dat ze beschadigt zijn.
Als ik dit alles op localhost draait werkt alles perfect. Ook als ik de files open rechtstreeks vanuit uploads/file.jpg werkt alles perfect.

Enig idee hoe dit komt?

Dit is het downloadsscript waar via een POST het id van de file wordt meegegeven.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
session_start();

$username = $_SESSION['username'];
$password = $_SESSION['password'];

$host = 'x';
$username_db = 'x';
$password_db = 'x';
$dbnaam = 'x';

$db = mysql_connect($host, $username_db, $password_db) or die (mysql_error());
mysql_select_db($dbnaam, $db) or die (mysql_error());

//Check do we have username and password

if(!$username && !$password)
    {

        echo 'Geen toegang.';
        die();
    }

    
    
    
// Usage: <a href="download.php?file=test.txt&category=test">Download</a>
// Path to downloadable files (will not be revealed to users so they will never know your file's real address)

$hiddenPath = "uploads/";

// VARIABLES
if (!empty($_POST['file'])){
$id = $_POST['file'];
    $result = mysql_query("SELECT * FROM files WHERE id='$id'");
    $row = mysql_fetch_array($result);
$file = $row['locatie'];

$file = str_replace('%20', ' ', $file);
$category = (!empty($_GET['category'])) ? $_GET['category'] . '/' : '';
}
else {
    die('Hacking attempt reported.');
}

$file_real = $hiddenPath . $category . $file;
$ip = $_SERVER['REMOTE_ADDR'];

// If requested file exists
if (file_exists($file_real)){
// Get extension of requested file
$extension = strtolower(substr(strrchr($file, "."), 1));
// Determine correct MIME type
switch($extension){
case
"asf": $type = "video/x-ms-asf"; break;
case
"avi": $type = "video/x-msvideo"; break;
case
"exe": $type = "application/octet-stream"; break;
case
"mov": $type = "video/quicktime"; break;
case
"mp3": $type = "audio/mpeg"; break;
case
"mpg": $type = "video/mpeg"; break;
case
"mpeg": $type = "video/mpeg"; break;
case
"rar": $type = "encoding/x-compress"; break;
case
"txt": $type = "text/plain"; break;
case
"wav": $type = "audio/wav"; break;
case
"wma": $type = "audio/x-ms-wma"; break;
case
"wmv": $type = "video/x-ms-wmv"; break;
case
"zip": $type = "application/x-zip-compressed"; break;
case
"jpg": $type = "image/jpeg"; break;
default:
$type = "application/force-download"; break;
}

// Fix IE bug [0]
$header_file = (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) ? preg_replace('/\./', '%2e', $file, substr_count($file, '.') - 1) : $file;
// Prepare headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public", false);
header("Content-Description: File Transfer");
header("Content-Type: " . $type);
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=\"" . $header_file . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file_real));
// Send file for download
if ($stream = fopen($file_real, 'rb')){
while(!feof($stream) && connection_status() == 0){
//reset time limit for big files
set_time_limit(0);
print(fread($stream,1024*8));
flush();
}

fclose($stream);
}
}
else{
// Requested file does not exist (File not found)
echo("Requested file does not exist");
die();

}

?>
Gewijzigd op 29/07/2012 00:05:23 door Sam H
 
PHP hulp

PHP hulp

28/09/2021 21:48:10
 
Marco PHPJunky

Marco PHPJunky

29/07/2012 00:35:39
Quote Anchor link
Laten we gewoon is bij het script beginnen...

om mee te beginnen:
- haal je vars buiten de quotes.
- Niet onnodig vars kopiëren.
- gebruik Geen * maar schrijf de velden uit.
- gebruik geen die() midden in je script!
------------------------------------------

waarom zitten/kunnen er spaties zitten/in de bestandsnamen ?
Waar zijn de foutafhandeling ? / Controles ?
je weet dat er verschillende MIME types zijn voor zowel jpeg als jpg en andere afbeeldingen:
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
jpeg    image/jpeg
jpg    image/jpeg
jpg    image/pjpeg
jpg     image/jpg
png    image/png
gif    image/gif
tif    image/tiff
tiff    image/tiff
ico    image/x-icon
bmp    image/bmp
pnm    image/x-portable-anymap
pnt    image/x-macpaint
pntg    image/x-macpaint
ppm    image/x-portable-pixmap

Kijk anders een naar deze functie: mime_content_type()
En deze Fileinfo

En je moet soms oppassen met de:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
header("Content-length: $size");
?>

Als de file size kleiner is dan de echte grote dan krijg je ook een corrupted file als je hem download
Gewijzigd op 29/07/2012 00:37:43 door Marco PHPJunky
 
Sam H

Sam H

29/07/2012 00:50:49
Quote Anchor link
Ok ik zal er allemaal eens naar kijken!
Maar ik snap niet dat dit kan verschillen tussen localhost en online?
Alles is exact hetzelfde, zelfs sommige files zijn mee geupload enz..

en ik snap ook niet goed wat je bedoelt met "waarom zitten/kunnen er spaties zitten/in de bestandsnamen ?"
Er kunnen toch spaties inzitten?

Toevoeging op 29/07/2012 00:53:47:

Ok ik heb het gevonden, hij gaf een error bij de

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//reset time limit for big files
set_time_limit(0);
?>


Als ik dit eruit haal werkt het perfect. De error is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: set_time_limit() has been disabled for security reasons in /home/a9367061/public_html/test.php on line 82


Welke security reasons?
Gewijzigd op 29/07/2012 00:54:59 door Sam H
 
Marco PHPJunky

Marco PHPJunky

29/07/2012 01:58:17
Quote Anchor link
Er Zitten 'grote' verschillen tussen online en offline (localhost).
Als iets online staat heb je te maken met de de computers van anderen en hun instellingen elke computer kan bijvoorbeeld een andere Java(script) versie draaien of staat Uit of hun browser anders hebben ingesteld of andere tijd zone...

Jou server is een 'statische' omgevingen waarin alles gecontroleerd en 'correct' ingesteld is... dat kan je NOOIT zeggen voor die van een ander...
Voorbeeld:
Ik bedoel van jij kan een heel mooi login systeem maken gebouwd m.b.v. javascript en dan zal het op jou computer vast perfect werken...
Maar als ik op mijn computer javascript UIT heb staan zal het NIET meer werken..
Snapje ?

Dat klopt er kunnen spaties in een bestandsnamen zitten ja..
Alleen als je gaat werken met paden en bestanden op een server of in de URL kan het zijn dat niet elke browser/script/download er goed mee omgaat en je hele rare dingen krijgt...

Gebruik daarom NOOIT spaties in bestandsnamen..
Vervang deze door een _ (of dergelijks)!!

Nou die functie (set_time_limit) staat uit als PHP Safe mode aan staat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
This function has no effect when PHP is running in safe mode.
There is no workaround other than turning off safe mode or changing the time limit in the php.ini

Bron: PHP.net

php.net

En deze staat waarscheinlijk uit in safe mode omdat je met deze functie het aantal secondes dat een script mag draaien kan setten...
Als dat getal (X aantal secondes) berijkt is geeft hij een Fatal error..

Dus waarscheinlijk staat/draaid je PHP local of op de server in Safe mode...

Heb je het draaien op een home server of op een hosting ?
Gewijzigd op 29/07/2012 02:12:45 door Marco PHPJunky
 
Sam H

Sam H

29/07/2012 15:27:54
Quote Anchor link
Het draait nu tijdelijk op een gratis hosting, als voorbeeld.

Is het mogelijk om dan aan de php.ini file te komen?
 



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.