afbeeldingen via HTML-formulier uploaden naar map (url)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen van de lisdonk

jeroen van de lisdonk

21/02/2014 11:17:27
Quote Anchor link
Hi everyone,

Ik ben bezig een upload-mogelijkheid te maken zonder gebruik van FTP-programma of upload-module in een webbrowser. Ik heb een HTML-pagina gemaakt met daarop een aantal beelden, voorzien van een checkbox. En verder nog een knop waarmee de aangevinkte beelden moeten worden geupload.

Nu heb ik eerder een PHP-script gebruikt om gegevens uit een HTML-formulier te mailen naar een opgegeven emailadres. Hierin worden de waarden van benoemde variabelen (ingevulde data of wel/niet aangevinkte checkboxes)keurig gemaild. Geen probleem verder.

Maar nu ben ik aan het proberen een soortgelijke constructie te maken, op gebied van uploaden i.p.v. mailen. Ik wil graag dat mijn aangevinkte afbeeldingen (uit mijn HTML-formulier) geupload worden nadat men op de 'upload-knop' (submit-button) heeft geklikt.

Het is dus niet de bedoeling om eigen, lokale, beelden te kunnen uploaden maar enkel de beelden die in het HTML-formulier aan te vinken zijn.

Wie kan me helpen om de goede richting te vinden in deze kwestie?

Alvast bedankt voor de moeite.

Jeroen
 
PHP hulp

PHP hulp

23/04/2024 08:30:33
 
Ivo P

Ivo P

21/02/2014 13:55:01
Quote Anchor link
waar staan die files dan? Als ze in het formulier genoemd worden, dan neem ik aan dat ze al op de server staan. Waarheen wil je ze dan uploaden?
 
Jeroen van de lisdonk

jeroen van de lisdonk

24/02/2014 10:09:45
Quote Anchor link
Hallo Ivo,

Bedankt voor je reactie. Klopt idd, ze staan al ergens online. Ik geef je een linkje naar een voorbeeldje dat ik heb gemaakt van de 'formulier-pagina'. http://www.lislab.nl/lab/voorbeeld/easy_uploader.html En het is mijn bedoeling, om de daar aangevinkte afbeeldingen, na klikken op submit-button, te laten uploaden naar een op te geven locatie (map op een ander domein, bv http://www.voorbeeld.nl/map1). Bij een mailformulier zorgt het php-script ervoor dat de ingevulde waardes worden gemaild naar een opgegeven emailadres. En nu probeer ik ipv waardes te mailen, de geselcteerde beelden te uploaden.
 
Michael -

Michael -

24/02/2014 10:17:15
Quote Anchor link
Om afbeeldingen naar een ander domein te uploaden moet je in ieder geval een ftp verbinding opzetten.
Als je dan het huidige pad van je afbeelding mee stuurt in je checkbox, dan kun je dit pad gebruiken om het plaatje te uploaden van de ene website naar de nieuwe locatie.
 
Ivo P

Ivo P

24/02/2014 10:57:56
Quote Anchor link
staan de domeinen wel altijd op dezelfde server?
 
Jeroen van de lisdonk

jeroen van de lisdonk

24/02/2014 12:42:22
Quote Anchor link
Het kan op hetzelfde domein. Maar het zou veel effectiever werken als ik de beelden centraal op 1 domein kan houden, en de upload van die beelden naar een willekeurig ander domein (waarvan ik dan natuurlijk wel de inlog gegevens heb). Het PHP-script moet er dus voor gaan zorgen dat dit lukt. Mogelijk nog in combinatie met een andere scripttaal, maar liefst zonder gebruik van database/mysql.

Toevoeging op 24/02/2014 12:43:14:

Sorry, dus liefst niet op zelfde server :-)
 
Michael -

Michael -

24/02/2014 14:33:30
Quote Anchor link
Ftp verbinding opzetten dus. Zie mijn eerder gegeven antwoord.
cb_foto1, cb_foto2, cb_foto3 zou ik hernoemen naar cb_foto[]
Zet je FTP verbinding op, en de POST met een foreach uploaden.

Toevoeging op 24/02/2014 14:45:36:

Voorbeeldje
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
<?php
function ftpupload($filename) {
    $ftp_server            = 'ftp.domein.nl'; // server
    $ftp_user_name        = ''; // username
    $ftp_user_pass        = ''; // password
    $dir                 = '/'; // De locale directory op je server. Bijv /domains/website.com/htdocs/www/ ( Begin en eindig met een / )
    
    $file = $filename; // Orginele naam en locatie zoals in de value van de checkbox
    
    $fileparts = pathinfo($filename);
    $filename = uniqid('upload_') . $fileparts['basename']; // Bestand hernoemen. upload_ + een uniek id gevolgt door de orginele naam.

    $conn_id = ftp_connect($ftp_server);
    if(ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)){
        
        //echo '<p>Verbonden</p>';
        
        if(ftp_put(
                $conn_id, // connection
                $dir.$filename, // upload to
                $file, // file to upload
                FTP_BINARY // type FTP_ASCII for text files || FTP_BINARY for others
                )
            ){

            echo '<p>'.$filename.' is succesvol geupload</p>'.PHP_EOL;
        }
else {
            echo '<p>Upload '.$filename.' is mislukt</p>'.PHP_EOL;
        }
    }
else {
        echo '<p>Verbinding met FTP server is mislukt</p>'.PHP_EOL;
    }


    ftp_close($conn_id);
}


if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(isset($_POST['cb_foto'])) {
        
        foreach($_POST['cb_foto'] AS $photo) {
            ftpupload($photo);
        }
    }
}

?>


<form method="POST">

<div id="foto1"><img src="http://www.lislab.nl/lab/voorbeeld/2176_82.jpg" width="40" height="40" /><input type="checkbox" name="cb_foto[]" value="http://www.lislab.nl/lab/voorbeeld/2176_82.jpg"></div>

<div id="foto2"><img src="http://www.lislab.nl/lab/voorbeeld/2224_56.jpg" width="40" height="40" /><input type="checkbox" name="cb_foto[]" value="http://www.lislab.nl/lab/voorbeeld/2224_56.jpg"></div>

<div id="foto3"><img src="http://www.lislab.nl/lab/voorbeeld/2265_42.jpg" width="40" height="40" /><input type="checkbox" name="cb_foto[]" value="http://www.lislab.nl/lab/voorbeeld/2265_42.jpg"></div>

<div id="verzend"><input type="submit" value="upload"/></div>

</form>
 
Jeroen van de lisdonk

jeroen van de lisdonk

26/02/2014 15:01:02
Quote Anchor link
Hi Michael. Bedankt voor jouw input. Sorry voor wat late reactie maar erg druk met ander werk. Ik ga met jouw voorbeeld aan de slag en laat zsm weten of het lukt en waar ik eventueel vastloop.

Toevoeging op 26/02/2014 15:46:39:

Hey Michael, geweldig voorbeeldje, zeg ik! Bedankt man. Works like a charm! Maar 1 klein dingetje nog. Het geuploade bestand krijgt een bestandsnaamwijziging. En dat zou eigenlijk niet moeten.

Ik heb al geprobeerd de regel te verwijderen uit jouw voorbeeld ($filename = uniqid('upload_') . $fileparts['basename']; // Bestand hernoemen. upload_ + een uniek id gevolgt door de orginele naam.) maar dan werkt de upload niet meer.

Weet jij misschien ook nog de manier om de bestandsnaam intact te laten?

Wederom bedankt voor je moeite
 
Michael -

Michael -

26/02/2014 15:50:12
Quote Anchor link
Als je regel 10 en 11 verwijdert zou ie de originele naam moeten behouden.
 
Jeroen van de lisdonk

jeroen van de lisdonk

27/02/2014 11:09:15
Quote Anchor link
Helaas. Als ik regel 10 en 11 verwijder, dan werkt het uploaden niet meer. Ik zie de echo, dat de upload is mislukt.

Toevoeging op 27/02/2014 11:13:59:

Maar als ik regel 11 aanpas naar dit:

$filename = $fileparts['basename'];

werkt het wel met originele bestandsnaam.

Heel erg bedankt. Dit is nu opgelost. Ik ga dit nog verder uitbouwen, dus misschien kom ik nog terug. Maar tegen die tijd start ik wel een nieuwe topic.
 
Ivo P

Ivo P

27/02/2014 11:15:29
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  $filename = uniqid('upload_') . $fileparts['basename']; ?>


wordt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  $filename =  $fileparts['basename']; ?>
 
Michael -

Michael -

27/02/2014 11:16:14
Quote Anchor link
Sorry je hebt gelijkt. Je hebt regel 10 wel nodig want je moet alleen de bestandsnaam hebben en niet het gehele pad erbij. Heb de code even voor je aangepast
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
<?php
function ftpupload($filename) {
    $ftp_server            = 'ftp..nl'; // server
    $ftp_user_name        = ''; // username
    $ftp_user_pass        = ''; // password
    $dir                 = '/'; // De locale directory op je server. Bijv /domains/website.com/htdocs/www/ ( Begin en eindig met een / )

    $fileparts = pathinfo($filename);

    $conn_id = ftp_connect($ftp_server);
    if(ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)){
        
        //echo '<p>Verbonden</p>';
        
        if(ftp_put(
                $conn_id, // connection
                $dir.$fileparts['basename'], // upload to
                $filename, // file to upload
                FTP_BINARY // type FTP_ASCII for text files || FTP_BINARY for others
                )
            ){

            echo '<p>'.$fileparts['basename'].' is succesvol geupload</p>'.PHP_EOL;
        }
else {
            echo '<p>Upload '.$fileparts['basename'].' is mislukt</p>'.PHP_EOL;
        }
    }
else {
        echo '<p>Verbinding met FTP server is mislukt</p>'.PHP_EOL;
    }


    ftp_close($conn_id);
}


if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(isset($_POST['cb_foto'])) {
        
        foreach($_POST['cb_foto'] AS $photo) {
            ftpupload($photo);
        }
    }
}

?>


<form method="POST">

<div id="foto1"><img src="http://www.lislab.nl/lab/voorbeeld/2176_82.jpg" width="40" height="40" /><input type="checkbox" name="cb_foto[]" value="http://www.lislab.nl/lab/voorbeeld/2176_82.jpg"></div>

<div id="foto2"><img src="http://www.lislab.nl/lab/voorbeeld/2224_56.jpg" width="40" height="40" /><input type="checkbox" name="cb_foto[]" value="http://www.lislab.nl/lab/voorbeeld/2224_56.jpg"></div>

<div id="foto3"><img src="http://www.lislab.nl/lab/voorbeeld/2265_42.jpg" width="40" height="40" /><input type="checkbox" name="cb_foto[]" value="http://www.lislab.nl/lab/voorbeeld/2265_42.jpg"></div>

<div id="verzend"><input type="submit" value="upload"/></div>

</form>
Gewijzigd op 27/02/2014 11:16:33 door Michael -
 



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.