Upload scriptje
http://cloud.yor-it.nl/index.php/s/IbCRPrYpo39wd2d
Het zou fijn zijn als iemand mij hiermee kan helpen... dat er bijvoorbeeld een random nummer achter gezet wordt.
Alvast bedankt,
Sander
Kan je de relevante code in het topic plaatsen, dan hebben andere er nog wat aan als de downloadlink straks verdwenen is.
Daar kun je controleren of de file al bestaat met:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if(!file_exsists($sometarget)){
move_uploaded_file($_FILES['xxxx']['tmp_name'], $sometarget);
}
?>
if(!file_exsists($sometarget)){
move_uploaded_file($_FILES['xxxx']['tmp_name'], $sometarget);
}
?>
Toevoeging op 29/06/2015 18:19:40:
je kunt in plaats van het niet verplaatsen ook kiezen voor een nummer achter de filename:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$counter = 1;
$target = $sometarget;
while(file_exsists($sometarget)) {
$sometarget = $target . $counter;
$counter++;
}
move_uploaded_file($_FILES['xxxx']['tmp_name'], $sometarget);
?>
$counter = 1;
$target = $sometarget;
while(file_exsists($sometarget)) {
$sometarget = $target . $counter;
$counter++;
}
move_uploaded_file($_FILES['xxxx']['tmp_name'], $sometarget);
?>
Gewijzigd op 29/06/2015 18:16:38 door Ivo P
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// A list of permitted file extensions
$allowed = array('png', 'jpg', 'gif');
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
$extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
if(!in_array(strtolower($extension), $allowed)){
echo '{"status":"error"}';
exit;
}
if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
echo '{"status":"success"}';
exit;
}
}
echo '{"status":"error"}';
exit;
[/code]
// A list of permitted file extensions
$allowed = array('png', 'jpg', 'gif');
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
$extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
if(!in_array(strtolower($extension), $allowed)){
echo '{"status":"error"}';
exit;
}
if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
echo '{"status":"success"}';
exit;
}
}
echo '{"status":"error"}';
exit;
[/code]
@Ivo: Als $sometarget een extensie bevat gaat het vast niet zoals je wilt.
Ik kan denk ik niet zomaar van alles gaan toevoegen... ik weet niet precies het het met die "if" zit... die moet namelijk wel nog blijven werken anders wordt op de pagina zelf de status niet goed doorgegeven... dat is met namen het probleem waar ik mee zit...
foto.jpg1
foto.jpg2
gaat prima. Zeker in een voorbeeldscript. Om dat weer te veranderen in
foto1.jpg kost wat extra regels, maar TS is vrij om eea aan te passen natuurlijk
Toevoeging op 29/06/2015 18:36:16:
sowieso is 'uploads/'.$_FILES['upl']['name'] niet zo'n goed plan over het algemeen.
De uploader laat je nu de naam bepalen. ook als er / of ../ oid in de filename staat.
Alleen ben ik geen voorstander van extenties met een getal er aan vast.
Ik ga meer voor foto1.jpg.
en de veiligheid is ook wel belangrijk ja... maar hoe ga ik het dan aanpassen zodat de statussen wel nog goed doorgenomen worden?
Dus de bestandsnaam kan je gewoon aanpassen naar elke waarde. Je kan zelfs een prefix/suffix meegeven zodat je kan onderscheiden of ze al gescreend zijn:
foto1.jpg v.s foto1_screened.jpg
Gewijzigd op 29/06/2015 18:51:46 door - Ariën -
is het niet mogelijk om de "tmp_name" aan te houden... neem aan dat hij daar toch al random is? of zie ik dat nou helemaal verkeerd?
Gewijzigd op 29/06/2015 19:09:08 door Sander Jansen
Mag iedereen vervolgens alle foto's opvragen als je de naam van de afbeelding kent?
Als je het eerste doet (en het tweede niet wilt), dan zou je kunnen overwegen om de foto's te serveren via een script die controleert of je deze mag zien op grond van <een lijst van voorwaarden>; Je zou dan de bestanden op kunnen slaan als 1.jpg, 2.jpg etc., met andere woorden, het auto_increment veld van de foto-metadata.
Je oplossing hangt af van hoe je (vervolgens) met deze foto's omgaat, maar daar heb ik je nog weinig over horen zeggen.
Je hebt het hierboven over "screening" dus je hangt al extra informatie op aan de afbeeldingen? Of ga je fysiek met bestanden slepen bij goed-/afkeuring?
Ook: als je een bestand upload, en deze wordt gehernoemd naar whatever3.jpg, dan weet je dus ook meteen dat whatever.jpg, whatever1.jpg en whatever2.jpg bestaan, het raden van bestandsnamen wordt dan vrij makkelijk.
Ook: als je dan toch een hanteerbare bestandsnaam wilt hebben dan heeft een auto_inrement id wel de voorkeur boven de tmp_name, maar dan moet je dus wel een hulpscript hebben die de bestanden serveert, waarin een controle zit die bepaalt of je een afbeelding mag zien.
Gewijzigd op 29/06/2015 19:31:45 door Thomas van den Heuvel
het skript komt op een site met een fotoalbum. het album en het upload skript staan los van elkaar. het is de bedoeling dat mensen via het upload, fotos kunnen "toevoegen". Wat het upload skript moet doen is alleen uploaden en in een map zetten, hier word vervolgens niets meer mee gedaan. dit wordt 1x in de week ofzo met de hand opgepakt en gecontroleerd of de fotos scherp zijn en of ze relevant zijn. vervolgens worden ze verplaatst en onderverdeeld in mapjes met de evenementen.
Het ./uploads mapje in trouwens een aflever map, hier kan alleen naar geschreven worden en niet gelezen.
Zodra ze goed zijn bevonden, kan de beheerder deze naar de webroot verplaatsten, zodat iedereen ze kan bekijken. Je hoeft dan zelf niet met prefixes aan de slag te gaan.
het enigste wat gedaan hoeft te worden is simpel weg uploaden en klaar... zou het eventueel met een ftp kunnen doen maar dan wordt het rommelig gezien iedereen moet kunnen uploaden... het uitzoek werk erna wordt met de hand gedaan dus...
Je wilt vast niet dat de ingestuurde foto's nog voor de controle te bekijken zijn. Dus dan is het zinvoller om hem afgeschermd te houden, buiten de webroot.
Dus hoe zou het skript eruit gaan zien dan? want kom er nog steeds niet uit
Je moet nog wel $sometarget defineren met de locatie waar het bestand moet komen te staan.
Ik weet dat het niet de bedoeling is dat ik een vraag stel en dan het hele skript kant en klaar met een strikje erom aangeleverd krijg maar het is in dit geval maar een aanvulling... en zo te horen niet veel werk... maar ik kan het zelf niet dus het zou fijn zijn als iemand dit voor mij zou willen doen...
heb wel van alles geprobeerd maar niks werkte echt ... krijg alleen fouten of dat dingen niet goed gaan... dus ja ik heb qua skript nog wat ik eerst had... dat is tenminste foutloos