Multi-Upload 2 bestandsnamen
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,
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)
Gewijzigd op 15/03/2018 14:42:41 door - 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.
Gewijzigd op 15/03/2018 14:52:53 door - 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)
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
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>
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.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 15/03/2018 16:02:04 door - Ariën -
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
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?
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 -
- 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?
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.
Hans Kroeze op 15/03/2018 14:59:14:
Code (php)
1
2
3
4
2
3
4
<?php
//save the url and the file
$filePath = "./test/" . date('d-m-Y-H-i-s').'-'.$_FILES['upload']['name'][$i];
?>
//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?
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,
Is er niemand die mij hiermee op gang kan helpen met wat code?
Groet,
Hans
In je filepath kan je toch boven of onder plaatsen, aan de hand van een variabele?
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,
Maar de vraag is eigenlijk: Hoe bepaal je of een bestand boven of onder wordt genoemd.
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,
Dat het in filepath komt te staan is de volgende stap.
Gewijzigd op 20/03/2018 11:45:05 door - Ariën -
Groet,
Code (php)
1
2
3
4
2
3
4
<?php
//save the url and the file
$filePath = $i == 0 ? "./test/boven.txt" : "./test/onder.txt";
?>
//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