Multi-Upload 2 bestandsnamen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Hans Kroeze

Hans Kroeze

15/03/2018 13:49:37
Quote Anchor link
Beste allemaal,

Ik heb een vraagje.
Ben bezig met een scriptje waarmee ik bestanden kan uploaden naar mijn toegekende folder.
Op dit moment worden de bestanden met de bestandsnamen geupload welke ook op mijn computer staan.
Ik heb al wel voor elkaar gekregen dat ik de datum er voor krijg.

Ik zou graag willen dat deze een specifieke vastgestelde bestandsnaam mee krijgen.

Het script zal gaan dienen dat er telkens twee bestanden worden geupload en deze daarna worden doorgestuurd per mail. Ik zou graag willen dat het bestand 1.txt en 2.txt krijgen telkens wanneer het bestand word geupload.

Weet iemand hoe dit gemaakt moet worden?

Met vriendelijke groet,
 
PHP hulp

PHP hulp

27/04/2024 02:11:46
 
- Ariën  -
Beheerder

- Ariën -

15/03/2018 14:37:00
Quote Anchor link
Op welke manier upload je? Is dit meerdere bestanden per PHP-script (zoals $_FILES), of een enkele (als je bijv. een "drag 'n drop" zoals bijvoorbeeld PLupload gebruikt)?

Ikzelf gebruik geen oplopende nummers, omdat die te voorspelbaar zijn.
Niet iedereen stelt er prijs op, en je moet steeds bepalen wat je laatste nummer is als je een nieuwe foto toevoegt.

Ikzelf gebruik de unix-epoch samen met een random string erachter. Dat laatste is omdat je lokaal bij het testen vaak zonder uploadtijd zit, en dat hij in die ene seconde meerdere bestanden gaat uploaden, en de andere overschrijven.
tevens heb ik voor het geval een controle ingebouwd of het bestand toevallig al bestaat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
private static function createFilename($filename) {
    while (true) {
        $timecreated = time();
        $file = pathinfo($filename);
        $prefix = uniqid();
        $filename_new = $timecreated.'_'.$prefix;
        if (!file_exists($filename_new)) break;
    }

    return $filename_new;
    }

?>
Gewijzigd op 15/03/2018 14:42:41 door - Ariën -
 
Hans Kroeze

Hans Kroeze

15/03/2018 14:47:57
Quote Anchor link
Dag Ariën,

Zoals de eerste inderdaad met $_files.
Ik kan het script evt. doorsturen? het is in principe een basic multi upload script die ik op internet gevonden heb. Deze ga ik verwerken zodra ik weet wat ik met de bestandsnamen kan.

Groet.
 
- Ariën  -
Beheerder

- Ariën -

15/03/2018 14:52:21
Quote Anchor link
Je kan het relevante deel van het script hier eventueel plaatsen. Uit veiligheidsoverwegingen raad ik altijd aan om niet de standaard naam erin te houden.
Gewijzigd op 15/03/2018 14:52:53 door - Ariën -
 
Hans Kroeze

Hans Kroeze

15/03/2018 14:59:14
Quote Anchor link
Dag Ariën,

Het is nu nog een test dus nog niks beveiligd aan.
1&2 waren eigenlijk een voorbeeld. ik zou graag een naam eraan koppelen bijv links,rechts,boven,onder
Maar wel namen die ik zelf bepaal. Mits mogelijk :)

Onderstaand het script wat ik nu gebruik om te uploaden.

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
<?php
if(isset($_POST['submit'])){
    if(count($_FILES['upload']['name']) > 0){
        //Loop through each file
        for($i=0; $i<count($_FILES['upload']['name']); $i++) {
          //Get the temp file path
            $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

            //Make sure we have a filepath
            if($tmpFilePath != ""){
            
                //save the filename
                $shortname = $_FILES['upload']['name'][$i];

                //save the url and the file
                $filePath = "./test/" . date('d-m-Y-H-i-s').'-'.$_FILES['upload']['name'][$i];

                //Upload the file into the temp dir
                if(move_uploaded_file($tmpFilePath, $filePath)) {

                    $files[] = $shortname;
                    //insert into db
                    //use $shortname for the filename
                    //use $filePath for the relative url to the file


                }
              }
        }
    }

    
        
    //show success message
    echo "<h1>Uploaded:</h1>";    
    if(is_array($files)){
        echo "<ul>";
        foreach($files as $file){
            echo "<li>$file</li>";
        }

        echo "</ul>";
    }
}

?>


<form action="" enctype="multipart/form-data" method="post">

    <div>
        <label for='upload'>Add Attachments:</label>
        <input id='upload' name="upload[]" type="file" multiple="multiple" />
    </div>

    <p><input type="submit" name="submit" value="Submit"></p>

</form>

Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 15/03/2018 16:02:04 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

15/03/2018 15:57:50
Quote Anchor link
Als je een uploadsysteem aan het maken bent kun je prima de naam waar je aan refereert en de daadwerkelijke bestandsnaam loskoppelen van elkaar. In wezen maakt het niet uit wat de daadwerkelijke bestandsnaam is zolang deze maar uniek is. Je zou de bestandsnaam zelfs om kunnen zetten in een random hash (of simpelweg het auto-increment id), en vervolgens via een database-tabelletje het type (MIME), de oorspronkelijke bestandsnaam, de eigenaar, datum van upload, bestandsgrootte en wat je ook maar verder wilt bijhouden hier in opslaan.

Persoonlijk zou ik deze dingen ook ontkoppelen, zodat je daar verder geen omkijken meer naar hebt.

Deze tabel kun je dan later ook gebruiken om bestanden te beheren en/of te serveren als download of attachment, waarbij je hier weer de oorspronkelijke bestandsnaam aan kunt koppelen.
Gewijzigd op 15/03/2018 16:07:18 door Thomas van den Heuvel
 
Hans Kroeze

Hans Kroeze

15/03/2018 16:14:20
Quote Anchor link
Dag Thomas,

Bedankt voor je reactie.
Hoe zou je dit dan doen? Kan je hiervoor een voorbeeld geven?

In mijn andere script(die ik actief ga maken) heb ik dit gedaan door een losgekoppelde naam.
Deze naam is altijd uniek en loopt ook op.

Alleen krijg ik dus wel dat unieke nummer gekoppeld aan het bestand. Maar niet die extra 2 namen die ik zou willen. oftewel, links rechts, 1 of 2, a of b.

kunnen jullie daarmee helpen?
 
- Ariën  -
Beheerder

- Ariën -

15/03/2018 16:31:22
Quote Anchor link
Ik sla alle foto's die geüpload zijn in de database op met de bestandsnaam en het en wat metadata. In een koppeltabel koppel ik de ID's van de foto's aan waar het aan toebehoort, en welke IDnummer dat type (nieuws, reviews, agendapunt) heeft.

Dus als ik aan een item 5 foto's gekoppeld heb, heb ik ook 5 records met die foto's. Ik sla alleen de timestamp en hashstring op zodat ik de foto's ook prima kan gebruiken bij andere items.

Je kan een foto wel links als prefix geven, maar wat als deze nou onverhoopt toch opeens bij 'rechts' toebehoort? Daarom zou ik zulke koppelingen in je database vastleggen zodat je toch flexibel bent.
Gewijzigd op 15/03/2018 16:39:12 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

15/03/2018 16:50:23
Quote Anchor link
Op het moment dat je hieraan begint ben je eigenlijk al met meerdere systemen bezig:
- loginsysteem (voor authenticatie)
- uploadsysteem
- backend met databaseondersteuning

Het is zaak dat je dit enigszins uitdenkt voordat je begint te rennen.

Voor de toevoeging van de databasetabel + extra veldnamen hoef je enkel het formulier uit te breiden met de extra metadata die je wilt opslaan. Vervolgens sla je eerst deze data op in de database, en het verkregen auto-increment id van die query gebruik je vervolgens voor het moven van de upload. Dan zul je een soort van backend moeten maken met een lijst van bestanden, hun oorspronkelijke naam, en alle andere informatie die je nog wilt weergeven.

De vraag is, waar ga je dit uiteindelijk voor gebruiken? Voor geautomatiseerde mailings en verder niets?
 
Hans Kroeze

Hans Kroeze

15/03/2018 17:05:33
Quote Anchor link
Dag Thomas,

Ik heb een geheel systeem draaien alleen dan voor een single file upload.
Deze maakt ook netjes het bestand aan zoals ik het wil.

Nu ben ik op een tweede omgeving een multiupload aan het maken. Om veiligheidsredenen heb ik verder de koppelingen daar niet naar toe gemaakt.

Het moet een systeem worden die 2 geuploade bestandjes + een .txt verstuurd naar een mailbox.
Het .txt bestand word aangemaakt door een invul veld op deze pagina, daar Koppel je dan de twee bestanden aan die ik zou willen uploaden (speciale extensie) en deze verstuur ik dan naar een mailbox.

Op de webpagina hoef ik overigens nergens iets van deze geuploade bestanden terug te vinden.

Op dit moment heb ik het werkend als ik handmatig de bestandsnamen wijzig voordat ik deze upload.
Maar zou dit graag door het script willen aanpassen.

Het gaat mij er dus echt om, ik heb twee bestanden a.pdf en b.pdf en deze wil ik automatisch noemen naar boven.pdf en onder.pdf

Hopelijk is het zo wat duidelijker.

Alvast bedankt voor jullie hulp.
 
Obelix Idefix

Obelix Idefix

15/03/2018 17:26:31
Quote Anchor link
Hans Kroeze op 15/03/2018 14:59:14:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//save the url and the file
$filePath = "./test/" . date('d-m-Y-H-i-s').'-'.$_FILES['upload']['name'][$i];
?>

Hier geef je het bestand toch een naam?

Hans Kroeze op 15/03/2018 16:14:20:
Maar niet die extra 2 namen die ik zou willen. oftewel, links rechts, 1 of 2, a of b.

Hoe / waar bepaal je dan wat je extra wilt?
 
Hans Kroeze

Hans Kroeze

16/03/2018 08:37:00
Quote Anchor link
Dag Obelix,

Dat is het problem. dit lukt wel, maar het lukt mij niet die vaste waarde in te geven die ik zelf wil.
Die datum en tijd is nooit een vaste waarde zoals ik het wil.

Groet,
 
- SanThe -

- SanThe -

16/03/2018 11:46:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//save the url and the file
$filePath = "./test/1.txt";
?>
 
Hans Kroeze

Hans Kroeze

20/03/2018 09:57:59
Quote Anchor link
Goedemorgen Allemaal,

Is er niemand die mij hiermee op gang kan helpen met wat code?

Groet,
Hans
 
- Ariën  -
Beheerder

- Ariën -

20/03/2018 10:46:40
Quote Anchor link
In je filepath kan je toch boven of onder plaatsen, aan de hand van een variabele?
 
Hans Kroeze

Hans Kroeze

20/03/2018 10:51:03
Quote Anchor link
Dag Ariën,

Volgens mij werkt dit niet. Iig niet zoals ik het gemaakt hebt.
Dan gaat die de gehele namen door elkaar gooien.

Maar heb jij daar een voorbeeld van dan?

Groet,
 
- Ariën  -
Beheerder

- Ariën -

20/03/2018 11:16:13
Quote Anchor link
Maar de vraag is eigenlijk: Hoe bepaal je of een bestand boven of onder wordt genoemd.
 
Hans Kroeze

Hans Kroeze

20/03/2018 11:18:44
Quote Anchor link
Dat is inderdaad mijn vraag, jij geeft aan dat ik dit in het filepath moet doen. Mij lukt dat niet.

Dus is het mijn vraag; ik heb twee bestanden test.jpg en daar wil ik een naam boven of onder aan toevoegen.
Hoe doe ik dit :)

Groet,
 
- Ariën  -
Beheerder

- Ariën -

20/03/2018 11:44:09
Quote Anchor link
Dan komen we eigenlijk toch weer terug op mijn vraag: Hoe wordt nu bepaald of het bestand onder of boven heet? Of moet dat soms willekeurig worden bepaald?
Dat het in filepath komt te staan is de volgende stap.
Gewijzigd op 20/03/2018 11:45:05 door - Ariën -
 
Hans Kroeze

Hans Kroeze

20/03/2018 11:47:21
Quote Anchor link
Het maakt mij niet uit hoe dit bepaald word, daar hang ik uiteindelijk op. Als het maar ergens bepaald word :)

Groet,
 
Ivo P

Ivo P

20/03/2018 12:01:02
Quote Anchor link
$i loopt kennelijk van 0 tot 1 (of eigenlijk tot het aantal geuploade files, maar laten we er vanuitgaan dat dat er 2 zijn)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//save the url and the file
$filePath = $i == 0 ?   "./test/boven.txt" : "./test/onder.txt";
?>


Dus de eerste file ($i = 0) gaat boven.txt heten, en de andere onder.txt
 

Pagina: 1 2 volgende »



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.