Bestanden uploaden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Full-stack Developer

As a Full-stack developer at KUBUS, you will develop the (web)applications and services of BIMcollab. You will work on both the front- and back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual developer you can have an impact and really make a difference. Our development team consists of over 40 developers, testers, scrum masters and product owners, divided over

Bekijk vacature »

Senior PHP developer

Functie Als Senior PHP developer heb je een sterke mening over de architectuur van projecten en de processen binnen het team. Je bent de sparringpartner voor je Team Lead. Ook ondersteun je met jouw kennis de minder ervaren developers in jouw team. Ze werken regelmatig aan projecten vanaf scratch en dit geeft ruimte om voor nieuwe technieken te kiezen. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Front end developer

Functie Jij als ervaren Front end developer bent een expert het gebied van Javascript en React. Je wordt onderdeel van een multidisciplinair team bestaande uit een PO, twee Front end developers, een DevOps/Back end developer, een UX/UI designer en een projectmanager. Verder is er iemand verantwoordelijk voor de HR en is de algemeen directeur nauw betrokken bij alle projecten. Dagelijks hou jij je bezig met de verschillende projecten die zijn opgenomen in de sprint. Daarnaast denk je mee over mogelijke oplossingen om de behoefte van de klant op de beste manier in te vullen. Verder spar jij intern met collega’s

Bekijk vacature »

.NET Developer C#

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken 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 die je hierbij beheerst is C#. Er

Bekijk vacature »

C# developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als C# Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the Year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Frontend Developer - Leeuwarden

Frontend Developer – Leeuwarden Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider

Bekijk vacature »

Junior .NET Software Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »
Rubensky PHP starter

Rubensky PHP starter

15/12/2016 15:52:40
Quote Anchor link
Mensen,

Wat wil ik: voor een website wil ik bestanden kunnen uploaden naar een server. Vervolgens wil ik dat er een link naar die bestanden in een database komt te staan. (Want volgens mij kan je geen bestanden opslaan in een database.) Als laatste wil ik dan op een andere pagina, als men ingelogd is kan men dan bij die pagina, de inhoud van de map "uploads" kan opvragen.

Concreet is de vraag is er een actuele tutorial die mij daarbij kan helpen?


Ik heb zelf deze gevonden: http://www.codingcage.com/2014/12/file-upload-and-view-with-php-and-mysql.html
En deze maar die is zonder database Daar zit overigens wel een mooi mededelingenschema in: http://phphulp.jorendewit.nl/view/12/

De vraag bij de scripts uit de link en degene die hier op het forum staan is: zijn ze, vanwege de leeftijd, nog actueel en veilig te gebruiken.

Als iemand mij zou willen helpen heel graag. (en nee, ik verwacht echt niet dat jullie nu een compleet script gaan zitten typen.)
 
PHP hulp

PHP hulp

27/11/2024 05:35:16
 
- Ariën  -
Beheerder

- Ariën -

15/12/2016 16:03:54
Quote Anchor link
Bestanden sla je graag op op een filesystem, en niet in een database. Dat laatste kan wel in een BLOB-veld, maar is in mijn ogen behoorlijk foutgevoelig en niet efficiënt en het maakt je database er ook niet kleiner op, wat extra langere tijd voor backups maken duurt.

Als je op bestandstype en mime-type controleert, dan ben je erg veilig.
Als je het wiel niet nogmaals wilt uitvinden kan je ook de Upload-class van verot.net gebruiken.
 
Rubensky PHP starter

Rubensky PHP starter

15/12/2016 16:30:03
Quote Anchor link
Overigens het deel van inloggen waar ik over spreek dat heb ik al het gaat mij echt om het uploaden van de files en het werken met de database daaraan.
 
- Ariën  -
Beheerder

- Ariën -

15/12/2016 16:37:14
Quote Anchor link
In de database sla je de relatieve verwijzing op. Dus als je user_rob_4314124.jpg opslaat op je filesystem. Dan sla je in de database ook de tekst user_rob_4314124.jpg op. Zo kan je er koppelingen mee doen, zoals de UserID van de eigenaren, of tags om uploads te zoeken in je beheerpaneel.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/12/2016 16:52:15
Quote Anchor link
@Rubensky waarvoor wil je het gaan gebruiken? Hoe groot zijn de bestanden? Hoeveel gebruikers heb je? Is een NAS, opslag in de cloud (een of andere filesharing-dienst, bijvoorbeeld, ik noem maar wat, Dropbox) of een private FTP server (hangt ook van bestandsgrootte) geen beter alternatief?
 
Adoptive Solution

Adoptive Solution

15/12/2016 18:07:58
Quote Anchor link
Zo doe ik het. Is voor een recepten website.

Plaatje + begeleidend tekst bestand opladen.

Plaatje + text worden in de db opgeslagen en als bestanden.

Werkt prima.

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
<script>

function setTitle ($this) {
    $this = $this.substr(0,$this.lastIndexOf('.'));
    $this = $this.replace(/"/g,' ');
    $this = $this.replace(/'/g,' ');
    $this = $this.replace(/,/g,' ');
    $this = $this.replace(/\?/g,' ');
    $this = $this.replace(/\!/g,' ');
    $this = $this.replace(/\@/g,' ');
    $this = $this.replace(/-/g,' ');
    $this = $this.replace(/--/g,'-');
    $this = $this.replace(/_/g,' ');
    $this = $this.replace(/   /g,' ');
    $this = $this.replace(/  /g,' ');
    $this = $this.replace('C:\\fakepath\\','');
//    $this = $this.replace('.jpg','');
//    $this = $this.replace('.gif','');
//    $this = $this.replace('.png','');
    document.getElementById('whatsit').value = $this;
    document.getElementById('whatsit').select();
}

function setRecipe ($this) {
    if ( $this.length ) {
        document.getElementById('recipe').checked = true;
    }
}
</script>

<h2>Latest uploaded image</h2>

<div id="showPict">

    <div id="nav">
        <div id="navL"><?php echo $isFirst; ?></div>
        <div id="navR"><?php echo $isLast; ?></div>
    </div>

    <div class="divClear"></div>

    <div id="divL" class="container">

        <figure style="max-width: 260px;">
            <a href="/store/?pid=<?php echo $pid . "&isLast=true"; ?>" title="Click to show details" style="border: none;">
                <img id="latestImage" src="?gim=1" />
            </a>
            <figcaption>
                <a href="/store/?pid=<?php echo $pid . "&isLast=true"; ?>" title="Click to show details"><?php echo ( $pid > 0 ? $pid  . " - " : "" ) . $title; ?></a>
            </figcaption>
        </figure>

        <h3>Please upload a new picture and title</h3>

        <div id="errmsg"><h4><?php echo $errmsg; ?></h4></div>

        <form enctype="multipart/form-data" method="POST">

            <p><input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxFileSize; ?>">

            <p>Choose an image (<?php echo $maxFileSizekB; ?>): <input id="imagefile" type="file" name="imagefile" required onchange="setTitle(this.value);"></p>

            <p>Enter a title for that image : <input id="whatsit" name="whatsit" size="40"></p>

            <p>Choose a recipefile : <input id="recipetxt" type="file" name="recipetxt" onchange="setRecipe(this.value);"></p>

            <p>Is this for a recipe? <input id="recipe" type="checkbox" name="recipe" value="1"></p>

            <p><input type="submit" name="submit" value="Upload image"></p>

        </form>

    </div>
    
    <div class="divClear"></div>

    <?php include_once( _INIT_PATH . "counter.php"); ?>

    <div id="foot"><?php include_once( _INIT_PATH . "footer.php" ); ?></div>

</div>


Het upload script :

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<?php

// http://www.wellho.net/solutions/php-example-php-form-image-upload-store-in-mysql-database-retreive.html
// http://www.wellho.net/resources/ex.php4?item=h113/pic_alog.php
// http://stackoverflow.com/questions/10892286/images-not-displaying-from-database-and-file


$errmsg = "";
$maxFileSize = "150000";
$maxFileSizekB = "max. 150kB";
$latest_image = "latest_image.img";
$latest_recipe = "latest_recipe.img";

include_once( $_SERVER["DOCUMENT_ROOT"] . "/init/" . "connect.php");

if ( $_REQUEST["submit"] ) {

//    echo $_FILES["imagefile"]["name"] . "<br />";
//    echo $_FILES["imagefile"]["size"];
//    exit();


    if ( ( $_FILES["imagefile"]["size"] > 0 ) && ( $_FILES["imagefile"]["name"] <> "" ) && ( $_REQUEST["whatsit"] <> "" ) ) {

        $extensions = array("pict", "gif", "jpg", "png", "txt");
        $imageFileType = strtolower( pathinfo( $_FILES["imagefile"]["name"],PATHINFO_EXTENSION ) );
        if ( $imageFileType == "jpeg" ) {
            $imageFileType = "jpg";
        }


/*
echo $imageFileType;
echo "<pre>";
print_r ($extensions);
echo "</pre>";
$os = ( in_array( $imageFileType , $extensions, TRUE ) == TRUE );
echo  $os;
exit();
*/


        if( in_array( $imageFileType , $extensions ) == TRUE ) {

            move_uploaded_file( $_FILES["imagefile"]["tmp_name"], $latest_image );
            // latest.img is container to temp store bytes image

            $recipeUploaded = FALSE;
            if ( $_FILES["recipetxt"]["name"] <> "" ) {
                    move_uploaded_file( $_FILES["recipetxt"]["tmp_name"], $latest_recipe );
                    // recipe.img is container to temp store bytes of text
                    $recipeUploaded = TRUE;
            }


//            see http://www.w3schools.com/php/php_file_upload.asp
//            $imageFileType = pathinfo( $target_file,PATHINFO_EXTENSION );

//            see http://www.phpeasystep.com/phptu/25.html for img size and type


            list( $width, $height, $type, $attr ) = getimagesize( $latest_image );
            $size = filesize( $latest_image );

            $mime = getimagesize( $latest_image );
            $imgMime = $mime['mime'];

            $instr = fopen( $latest_image, "rb") ;

            if ( count($instr) < $maxFileSize ) {
                $image = addslashes( fread( $instr, filesize( $latest_image ) ) ); //
                $instrStore = fopen( $latest_image, "rb") ;
                $imageStore = fread( $instrStore, filesize( $latest_image ) );
                if ( $recipeUploaded == TRUE ) {
                    $instrtxt = fopen( $latest_recipe, "rb" );
                    $recipeText = addslashes( fread( $instrtxt, filesize( $latest_recipe ) ) );
                }
else {
                    $recipeText = "";
                }


                $uniqid = uniqid();
                $uniqidPath1 = substr( $uniqid, 0 , 4) . "/";
                $uniqidPath2 = substr( $uniqid , 4, 4) . "/";
                $imgurl = $uniqidPath1 . $uniqidPath2 ;
                $recipeText = filter_var( $recipeText, FILTER_SANITIZE_SPECIAL_CHARS );
                $title = filter_var( $_REQUEST["whatsit"], FILTER_SANITIZE_SPECIAL_CHARS );

                $imgType = $extensions[$type];
                $imgWidth = $width;
                $imgHeight = $height;
                $imgSize = $size;
                $isRecipe = filter_var( $_REQUEST["recipe"], FILTER_SANITIZE_SPECIAL_CHARS );
                $hasTextfile = ( $recipeText <> "" );

            // START MAKING THUMB
            // insert code for making thumb
            /*** create a second variable for the thumbnail ***/


            $size = getimagesize( $latest_image );
            /*** get the aspect ratio (height / width) ***/
            $aspectRatio = (float)($size[0] / $size[1]);

            /*** the height of the thumbnail ***/
            $thumb_height = 100;

            /*** the thumb width is the thumb height/aspectratio ***/
            $thumb_width = $thumb_height * $aspectRatio;

            /***  get the image source ***/
            $functions = array(
                IMAGETYPE_GIF => 'imagecreatefromgif',
                IMAGETYPE_JPEG => 'imagecreatefromjpeg',
                IMAGETYPE_PNG => 'imagecreatefrompng',
            );


            //$src = ImageCreateFromjpeg($latest_image);
            $src = $functions[$size[2]]($latest_image);

            /*** create the destination image ***/
            $destImage = ImageCreateTrueColor($thumb_width, $thumb_height);
            imagealphablending( $destImage, false );
            imagesavealpha( $destImage, true );

            /*** copy and resize the src image to the dest image ***/
            ImageCopyResampled($destImage, $src, 0,0,0,0, $thumb_width, $thumb_height, $width, $height);

            /*** start output buffering ***/
            ob_start();

            /***  export the image ***/
            $functions2 = array(
                IMAGETYPE_GIF => 'imagegif',
                IMAGETYPE_JPEG => 'imagejpeg',
                IMAGETYPE_PNG => 'imagepng',
            );


            //imageJPEG($destImage);
            $functions2[$size[2]]($destImage);

            /*** stick the image content in a variable ***/
            $image_thumb = addslashes(ob_get_contents());

            /*** clean up a little ***/
            ob_end_clean();

            // END MAKING THUMB

            // BEGIN SAVE THE $recipeText AND $imageStore AS FILES,
            // BESIDES OR INSTEAD OF ALSO SAVING IN DATABASE

                $recipePix = $_SERVER['DOCUMENT_ROOT'] . _RECIPEPATH;
                $structure = $recipePix . $uniqidPath1 . $uniqidPath2 ;

                if ( !is_dir( $structure ) ) {
                    if ( !mkdir( $structure, 0777, TRUE ) ) {
                        // if dir exist, simply ignore this warning
                        echo "Directory exists";
                    }
                }


                $sanatized = str_ireplace ( " " , "-" , html_entity_decode( $title ) ) ;
                $sanatized = str_ireplace ( "\"" , "_" ,   $sanatized ) ;
                $sanatized = str_ireplace ( "'" , "_" ,  $sanatized ) ;
                $sanatized = str_ireplace ( "__" , "_" , $sanatized ) ;

                if ( $recipeText <> "" ) {
                    if ( !file_put_contents( $structure . $sanatized . "." . "txt", html_entity_decode( $recipeText ) ) ) {
                        $errmsg = "Saving of textfile has failed";
                    }
                }


                //chown($structure . $uniqid.txt, 'http'); // this does not work on my NAS
                if ( !file_put_contents( $structure . $sanatized . "." . $imgType, $imageStore ) ) {
                    $errmsg = "Saving of imagefile has failed";
                }

            // END SAVE IMAGE AND RECIPETXT AS FILES

            // IF YOU DO NOT WANT TO SAVE THE IMAGE IN THE DATABASE,
            // SKIP THE 'imgdata' FIELD AND '$image' VAR
            // YOU MAY ALSO WANT TO SKIP THE FILESIZE CHECK


                $theDate = date("Y-m-d H:i:s");
                $db->query("INSERT INTO " .  _PIX . " (title, titlesanatized, imgdata, imgurl, uniqueid, width, height, type, mime, size, thumb_data, thumb_width, thumb_height, date, recipe, has_textfile, recipetxt ) values ('" .
                $title . "','" .
                $sanatized . "','" .
                $image . "','" .
                $imgurl . "','" .
                $uniqid . "','" .
                $imgWidth . "','" .
                $imgHeight . "','" .
                $imgType . "','" .
                $imgMime . "','" .
                $imgSize . "','" .
                $image_thumb . "','" .
                $thumb_width . "','" .
                $thumb_height . "','" .
                $theDate . "','" .
                $isRecipe . "','" .
                $hasTextfile . "','" .
                $recipeText . "')");
                $numm = mysqli_affected_rows($db);
                $errmsg = 'Image' . ($numm > 0 ? ' ' : ' not ') . 'added to Database' ;
            }
else {
                $errmsg = "Image is too large!";
            }
        }
else {
            $errmsg = "This is not an image";
        }
    }
else {
        if ( ( $_FILES["imagefile"]["name"] <> "" ) && ( $_FILES["imagefile"]["size"] == 0 ) ) {
            $errmsg = "Image is too large";
        }
else {
            $errmsg = "No image selected";
        }
    }
}

// Find out about latest image

$gotten = $db->query("SELECT * FROM " .  _PIX . " ORDER BY pid DESC LIMIT 1");
if ( $row = $gotten->fetch_object() ) {
    $pid = $row->pid;
    $title = $row->title;
    $bytes = $row->imgdata;
}
else {
    $errmsg = "No images in the database";
    $title = "No database image available";
    // Put up a picture of our training centre
    $instr = fopen( _ROOT . "/images/WorldMap.png","rb" );
    $bytes = fread( $instr, filesize( _ROOT . "images/WorldMap.png" ) );
}


// If this is the image request, send out the image

if ($_REQUEST[gim] == 1) {
    header("Content-type: image/jpeg");
    print $bytes;
    exit ();
}

include_once( _INIT_PATH . "navigation.php");

$_REQUEST["isFirst"] = "true";
$_REQUEST["isLast"] = "true";

setNavigation();

?>
Gewijzigd op 15/12/2016 18:08:42 door Adoptive Solution
 
- Ariën  -
Beheerder

- Ariën -

15/12/2016 18:25:10
Quote Anchor link
Alleen de rechten op 777 zetten is erg overdreven ;-).
 
Rubensky PHP starter

Rubensky PHP starter

15/12/2016 18:48:08
Quote Anchor link
Dank voor dit mooie script. Nog even paar vragen Upload jij de bestanden daadwerkelijk naar de database?

2 waar is de connectie met de database?

Wat ik wil is de bestanden in een aparte map op mijn server en alleen een link naar het bestand opslaan in mijn database.

(anders wordt de database zo extreem groot.)

Ten aanzien van de andere vraag die mij gesteld ik gebruik nu ruimte bij een hosting provider.
Gewijzigd op 15/12/2016 18:51:29 door Rubensky PHP starter
 
- Ariën  -
Beheerder

- Ariën -

15/12/2016 18:57:21
Quote Anchor link
Alleen metagegevens slaat hij op in de database. Zoals bestandsnaam, URL, een uniek ID, Mimetypes, grootes.
 
Adoptive Solution

Adoptive Solution

15/12/2016 19:20:18
Quote Anchor link
Quote:
2 waar is de connectie met de database?


Regel 13

Quote:
Alleen metagegevens slaat hij op in de database. Zoals bestandsnaam, URL, een uniek ID, Mimetypes, grootes.


Nee hoor, niet alleen de meta gegevens worden opgeslagen, ook de afbeelding zelf.

Bij regel 171-173 staat duidelik wat te doen als je de afbeelding NIET wilt opslaan in de databse.
 
Rubensky PHP starter

Rubensky PHP starter

15/12/2016 22:05:19
Quote Anchor link
Dank voor de uitleg.

Dan ga ik maar eens aan de slag met ik denk dit gedeelte:

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
   $theDate = date("Y-m-d H:i:s");
                $db->query("INSERT INTO " .  _PIX . " (title, titlesanatized, imgdata, imgurl, uniqueid, width, height, type, mime, size, thumb_data, thumb_width, thumb_height, date, recipe, has_textfile, recipetxt ) values ('" .
                $title . "','" .
                $sanatized . "','" .
                $image . "','" .
                $imgurl . "','" .
                $uniqid . "','" .
                $imgWidth . "','" .
                $imgHeight . "','" .
                $imgType . "','" .
                $imgMime . "','" .
                $imgSize . "','" .
                $image_thumb . "','" .
                $thumb_width . "','" .
                $thumb_height . "','" .
                $theDate . "','" .
                $isRecipe . "','" .
                $hasTextfile . "','" .
                $recipeText . "')");
                $numm = mysqli_affected_rows($db);
                $errmsg = 'Image' . ($numm > 0 ? ' ' : ' not ') . 'added to Database' ;
            } else {
                $errmsg = "Image is too large!";
            }
        } else {
            $errmsg = "This is not an image";
        }
    } else {
        if ( ( $_FILES["imagefile"]["name"] <> "" ) && ( $_FILES["imagefile"]["size"] == 0 ) ) {
            $errmsg = "Image is too large";
        } else {
            $errmsg = "No image selected";


Want in principe wil ik alleen pdf txt en docx bestanden opslaan in een map. En de gegevens daarvan in de database. (niet de bestanden zelf.)

Als ik dat goed begrijp dan kan ik ook nog eens gaan kijken maar dat ligt nog een paar kilometer voor me hoor en daar gaat het me nu echt niet om de bestanden verschillend opslaan en filteren.
 
- Ariën  -
Beheerder

- Ariën -

15/12/2016 22:09:42
Quote Anchor link
Met welk doel filteren?
 
Rubensky PHP starter

Rubensky PHP starter

15/12/2016 22:20:29
Quote Anchor link
Om dingen te leren! net als dat ik zaken in wil gaan bouwen als "U hebt geen bestand gekozen"het gekozen type wordt niet ondersteund".

Dit project is privé nergens voor nodig maar vind het leuk om met php te experimenten en te leren. (als je het leuk vind wil ik nog wel een paar dingen neerzetten waar ik naar zoek of lekker aan het bouwen ben.)
 
Thomas van den Heuvel

Thomas van den Heuvel

16/12/2016 15:22:04
Quote Anchor link
Een aantal dingen die ik niet helemaal vat in de code van @Adoptive.

Eerst sla je een afbeelding op en vervolgens controleer je pas of dit een afbeelding betreft (met behulp van getimagesize())? Ook roep je meerdere keren getimagesize() aan en houd je geen rekening met de mogelijkheid dat het geen afbeelding betreft. Draai dit om: ga eerst na of het een afbeelding betreft en sla dan pas iets op.

Waarom sla je een tekstbestand op? Waarom moet deze in eerste instantie geupload worden (wat is er mis met een textarea)? En waarom escape je de input hiervan :/. Het escapen van input belemmert de auteur van het recept mogelijk later ook om deze te wijzigen, deze kan namelijk hierdoor inhoudelijk gewijzigd zijn, wat mij niet de bedoeling lijkt. Sla alles gewoon "rauw" op en behandel dit als User Data.

Addslashes() is trouwens niet the way to go. Gebruik fatsoenlijke escape-functies in je query.
 
Rubensky PHP starter

Rubensky PHP starter

19/12/2016 21:34:47
Quote Anchor link
- Ariën -:
Quote verwijderd. Het is niet nodig om een voorgaande bericht te quoten. Gelieve hier rekening mee te houden zodat het topic overzichtelijk blijft.


Tomas,

Zou je eens een voorbeeld van een, volgens jou, goed script kunnen posten? Zo te lezen heb je nogal het een en ander aan verbeteringen. En daar staan we natuurlijk voor open.
Gewijzigd op 19/12/2016 21:36:08 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

19/12/2016 21:38:48
Quote Anchor link
Als ik mij niet vergis zou je met dit kunnen controleren of iets een afbeelding is, of juist niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if(is_array(getimagesize($image))){
    // een afbeelding
} else {
    // GEEN afbeelding.
}
 
Thomas van den Heuvel

Thomas van den Heuvel

20/12/2016 15:28:42
Quote Anchor link
Rubensky PHP starter op 19/12/2016 21:34:47:
Zou je eens een voorbeeld van een, volgens jou, goed script kunnen posten? Zo te lezen heb je nogal het een en ander aan verbeteringen. En daar staan we natuurlijk voor open.

Zou je eerst eens kunnen kijken naar mijn bovenstaande vragen?

Mocht je dan besluiten om dit alsnog in PHP/MySQL te doen dan heb ik hier geen *enkel* "script" voor liggen. Wat je wilt klinkt namelijk als een beheersysteem voor media. Dit valt sowieso in een aantal stukken uiteen:
- gebruikersbeheer
- beheerschermen binnen het mediasysteem, met bijbehorende formulieren voor verwerking
- database- en filesysteemstructuur
- functionaliteit voor verwerking van file-uploads

Al deze onderdelen zou je in principe redelijk onafhankelijk van elkaar kunnen ontwikkelen. Dt lijkt mij ook handig/verstandig uit oogpunt van modulariteit/herbruikbaarheid. Ook zou je eens kunnen kijken of je kant en klare onderdelen kunt gebruiken.
 
Rubensky PHP starter

Rubensky PHP starter

22/12/2016 12:14:13
Quote Anchor link
Ik doe niks voor het professionele. Ik ben gewoon voor de hobby bezig mijzelf aan te leren hoe zo iets moet. (misschien dat ik er over ongeveer een jaar wel iets mee ga doen maar ik heb op dit moment totaal geen plannen

Ik heb een domein bij een hosting provider. Daar staat mijn webpagina op en daar wil ik ook de bestanden plaatsen.

Voor de duidelijkheid zal ik je even meenemen in wat ik op dit moment als een project heb voor mijzelf en aan het ontwikkelen ben

1 een inlog met daaronder pagina's die je alleen kan zien als je ingelogd bent. (gereed)
2 Dat is het deel waar het in dit topic over gaat:
Via een formulier wordt er een nieuw dossier aangemaakt. De meta gegevens van dit dossier worden in de database opgeslagen. De daaronder te hangen, op dit moment lege, PDF en Word bestanden komen in een aparte map.

Mijn volgende project zal dan zijn op dossiernummer kunnen zoeken in de database die dan vervolgens ook alle onderliggende bestanden toont.
 
- Ariën  -
Beheerder

- Ariën -

22/12/2016 14:36:53
Quote Anchor link
Okee, klinkt goed.
Inmiddels is het één en ander al gelukt?
 
Rubensky PHP starter

Rubensky PHP starter

24/12/2016 20:34:39
Quote Anchor link
Nog niet ik ga er na de kerst weer lekker mee verder. Er komt wel een nieuwe vraag aan van mij...
 



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.