Multidesk.be » Forums » PHP » upload script/pagina

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door k_a_lf op dinsdag 1 december 2009 om 12:49:29.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Sinds een paar maanden heb ik de taak van webmaster van onze de site van onze scoutsgroep overgenomen. Nu heb ik al een hele verzameling van usb-sticks, dvd's, cd's en geheugenkaarten rondslingeren met foto's op (om dan nog te zwijgen over hoe vol mijn mailbox soms zit:p).

Om dit allemaal een beetje in te perken, was ik aan het denken om er voor te zorgen dat de leiding gewoon zelf foto's kan uploaden en ik ze dan gewoon maar in de juiste map hoef te plaatsen en een fotopagina bijmaken. Op zich zou ik een tweede FTP account kunnen aanmaken, maar er zitten een aantal leken bij dus iedereen met een FTP client leren omgaan zie ik ook niet zitten.

De beste optie lijkt me dan dus ook een pagina aan te maken waar ze foto's kunnen uploaden (bij voorkeur dan nog meerdere tegelijkertijd). Heb al een beetje gezocht op google en ik vind wel hopen scipts, maar ik begrijp geen snars van die PHP. Is er iemand die me op weg kan helpen?
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #1 geschreven door SMG op dinsdag 1 december 2009 om 13:54:23.
SMG's avatar
Multiviteit: 12000
Moderator
Wees blij dat je dit niet in ASP moet maken want dat is dikke sh*t :p

Al eens gekeken naar Martijn's prachtige artikel hierover?
http://www.multidesk.be/artikels/artikel/106/Hoe-kan-ik-meerdere-bestanden-uploaden-met-PHP.html
^ Reactie #2 geschreven door k_a_lf op dinsdag 1 december 2009 om 14:18:17.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Shame on me:p, zal het eens doornemen! Zal ongetwijfeld meer duidelijkheid brengen dan al de rest wat ik tot nu toe gevonden heb:d:).
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #3 geschreven door SMG op dinsdag 1 december 2009 om 14:25:19.
SMG's avatar
Multiviteit: 12000
Moderator
Heb het zelf ook gebruikt en het is eigenlijk belachelijk simpel. Bij ASP moet je daar een stuk of 2 pagina's aan code schrijven om hetzelfde gedaan te krijgen.

ASP nu wel een veel oudere taal en wordt naar mijn weten niet echt nog doorontwikkeld.
^ Reactie #4 geschreven door k_a_lf op dinsdag 1 december 2009 om 15:12:11.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Is inderdaad best duidelijk:) alleen nog wel een paar vragen:p:).
1.Dit deel: "Denk er ook aan dat je je map de nodige permissies moet geven, CHMOD 777 via je FTP client zou alles moeten regelen." Hoe doe ik dat?:p
2. Hoe kan ik ervoor zorgen dat er meerdere extensies toegestaan zijn?

Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #5 geschreven door SMG op dinsdag 1 december 2009 om 15:40:07.
SMG's avatar
Multiviteit: 12000
Moderator
1. Dat zijn de permissies die je instelt. In Linux worden permissies kort geschreven als cijfers. 777 wilt zeggen dat iedereen lees, schrijf en uitvoer rechten heeft op die map. Hoe je dit wijzigt hangt af van welke FTP client je gebruikt (of gebruik je misschien SSH toegang?)
Soit, hier staan ze allemaal op een rijtje: De ftp client in Windows verkenner, die van WinSCP en Putty.
ca45e0482ce1cc4ef08a644ea33ae349.png

Extra nutteloze nerd informatie:
Het eerste cijfer heeft betrekking met de eigenaar, het tweede met de groep en het laatste de andere. 700 betekend dus dat de eigenaar alles mag en de rest niets.
De cijfertjes zijn in het begin wat wennen om ermee te werken, maar nadien zijn ze simpel :p
Schrijfrechten is 4
Leesrechten is 2
Uitvoerrechten is 1
De cijfertje waar elke permissie voor staat is niet lukraak gekozen. Elke combinatie moet immers mogelijk blijven:
Als er dus staat 751 wilt dat zeggen dat de eigenaar (7) alles mag (schrijfrechten (4) + leesrechten (2) en uitvoerrechten (1) is 7), de groep (5) mag schrijven en uitvoeren (want uitvoerrechten (1) + schrijven (4) is 5) en andere enkel mogen uitvoeren (1).
Eens je dit onder de knie hebt zal je merken dat dit wel VELE malen sneller werkt dan die lange notatie. Linux is natuurlijk wel een command line OS.
PS: in die schermafdruk bij dat van WinSCP zie je overigens het getal dat de combinatie van rechten voorstelt. Wat dat tweetje daarbij doet weet ik echter niet. Als je het weglaat werkt het ook ;)

2. in die laatste code blok in het artikel staat op regel 2 if ($_FILES['bestand']['type'][$i] == "image/gif"){
Daar kan je een or toevoegen die een andere extensie toelaat. Een or in PHP doe je met 2 | (AltGr + 1 & | -> dat ding dat boven de letter a staat). Dit zou dus zoiets moeten worden:
if ($_FILES['bestand']['type'][$i] == "image/gif" || $_FILES['bestand']['type'][$i] == "image/jpg"){

Ik hoop dat er geen fouten in zitten op die manier :p Mijn PHP is een beetje ver achterwegen (ActionScript is zoveel leuker :D)
Deze tekst werd het laatst bewerkt voor 2.07 % door SMG op dinsdag 1 december 2009 om 15:48:16.
^ Reactie #6 geschreven door k_a_lf op zondag 6 december 2009 om 00:10:47.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Even gewoon het script van Martijn gekopieerd, in een html bestand geplakt en het aantal en de locatie aangepast om te testen, maar ik krijg telkens dit:

http://www.multidesk.be/bijlage/ba111417fa1cfb3a7aed2f549b54adb2.jpg


De gebruikte code:
CODE
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Untitled Document</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10.       <?php
  11.  
  12.        
  13.  
  14.       #####################################################################
  15.  
  16.       # Deze code werd vrijgegeven onder de GPL (General Public License)  #
  17.  
  18.       # Copyright (©) 2004 Martijn Wouters voor [url=http://www.multidesk.be]www.multidesk.be[/url]          #
  19.  
  20.       #####################################################################
  21.  
  22.        
  23.  
  24.       // Verander de waarde naar het aantal simultane uploads dat je wil toelaten.
  25.  
  26.       $aantaluploads = 50;
  27.  
  28.        
  29.  
  30.       // Verander de onderstaande string naar de map waarheen je je bestanden wil uploaden
  31.  
  32.       // Vergeet die map geen write-permissions te geven!!! (CHMOD 777)
  33.  
  34.       $map = "../public_ftp/foto";
  35.  
  36.       // Teller voor het berekenen van het aantal bestanden dat geüpload werd
  37.  
  38.       $aantalbestanden = 0;
  39.  
  40.        
  41.  
  42.       // Nagaan of er bestanden moeten geüpload worden
  43.  
  44.       if (isset($_POST['submit'])) {
  45.  
  46.        
  47.  
  48.               // We gaan nu elke input een voor een nakijken
  49.  
  50.               for ($i=0;$i<$aantaluploads;$i++) {
  51.  
  52.                      
  53.  
  54.                       // Als de input niet leeg is...
  55.  
  56.                       if (trim($_FILES['bestand']['name'][$i]) != "") {
  57.  
  58.                      
  59.  
  60.                               // ... schrijven we het bestand weg naar de eerder opgegeven map
  61.  
  62.                               move_uploaded_file($_FILES['bestand']['tmp_name'][$i], $map.$_FILES['bestand']['name'][$i]) or die("Er is een fout opgetreden tijdens het uploaden");
  63.  
  64.                               // Teller voor het aantal bestanden dat geüpload verhogen
  65.  
  66.                               $aantalbestanden++;
  67.  
  68.                              
  69.  
  70.                       }
  71.  
  72.                      
  73.  
  74.               }
  75.  
  76.              
  77.  
  78.       }
  79.  
  80.              
  81.  
  82.       // Als het aantal geüploade bestanden groter dan 1 is...
  83.  
  84.       if (isset($aantalbestanden) && $aantalbestanden>1) {
  85.  
  86.              
  87.  
  88.               // ... laten we de bezoeker even weten dat zijn bestanden met succes weggeschreven werden
  89.  
  90.               echo "Je bestanden werden met succes geüpload.";
  91.  
  92.              
  93.  
  94.       // ... anders is er misschien slechts 1 bestand geüpload;
  95.  
  96.       }
  97.       elseif (isset($aantalbestanden) && $aantalbestanden==1) {
  98.  
  99.              
  100.  
  101.               // zoja, laten we de bezoeker weten dat zijn bestand goed werd weggeschreven
  102.  
  103.               echo "Je bestand werd met succes geüpload.<br />";
  104.  
  105.              
  106.  
  107.       }
  108.  
  109.        
  110.  
  111.       echo '<form method="post" enctype="multipart/form-data">';
  112.  
  113.        
  114.  
  115.       // Evenveel inputs genereren als eerder werd aangegeven
  116.  
  117.       for($i=0; $i<$aantaluploads; $i++) {
  118.  
  119.        
  120.  
  121.               echo '<input type="file" name="bestand[]" size="30" /><br />';
  122.  
  123.              
  124.  
  125.       }
  126.  
  127.        
  128.  
  129.       echo '<input type="submit" name="submit" />
  130.  
  131.       </form>';
  132.  
  133.       ?>
  134. </body>
  135. </html>
  136.  
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #7 geschreven door k_a_lf op maandag 7 december 2009 om 15:30:08.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
*schop*
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #8 geschreven door thekid op maandag 7 december 2009 om 16:19:59.
thekid's avatar
Multiviteit: 5273
Moderator
volgens mij ondersteund da spel geen php van u :p

zeg eens, waar op test je dit, is je pagina opgemaakt met extensie .php?
Deze tekst werd het laatst bewerkt voor 11.11 % door thekid op maandag 7 december 2009 om 16:21:05.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #9 geschreven door k_a_lf op maandag 7 december 2009 om 16:33:57.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Oeps, stomme fout:p. Was uit gewoonte .html:p.

Is het op een niet al te moeilijke manier te realiseren dat er meerdere bestanden in één keer kunnen worden geüpload? Zodat je bv. maar één keer op bladeren moet klikken en zo pakweg 25 foto's kan selecteren en uploaden?:) Want als je 25 keer opnieuw moet gaan klikken, dat is ook niet alles:):d.
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #10 geschreven door thekid op maandag 7 december 2009 om 16:35:25.
thekid's avatar
Multiviteit: 5273
Moderator
nee
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #11 geschreven door k_a_lf op maandag 7 december 2009 om 16:37:52.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Ok, dan niet:-p:). Maar hoe wordt dat dan op andere sites gedaan?:)
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
^ Reactie #12 geschreven door thekid op maandag 7 december 2009 om 16:44:15.
thekid's avatar
Multiviteit: 5273
Moderator
geef dan een voorbeeld van zo'n selectiescript, hé, er is jammer genoeg een gevaar voor de client indien je via een tooltje alle bestanden van de client pc kunt inlezen (zelfs al is het enkel voor het selecteren van de foto's), misschien kan het wel via een java-applet/shockwave/flash applicatie, maar als het zou kunnen via het gewone web zouden er veel meer offline-virusscanners bestaan :)

maar je vroeg achter een eenvoudige manier, hé? :D

hierzie: leesvoer
http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/
Deze tekst werd het laatst bewerkt voor 12.09 % door thekid op maandag 7 december 2009 om 16:52:11.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #13 geschreven door k_a_lf op maandag 7 december 2009 om 16:59:17.
k_a_lf's avatar
Multiviteit: 2650
INFØMAN
k_a_lf says BWAAAAAP!
Ik kan zo niet direct een voorbeeld vinden, maar weet wel dat ik het al ben tegengekomen:p.

Erg makkelijk zal het waarschijnlijk niet te implementeren zijn en dan is het ook niet de bedoeling dat de eindgebruiker iets moet gaan installeren (zelfs al is het maar java, ik ken mijn medeleiding:p). Dus dan zal ik het zo maar laten:p:d, ga het zelf toch nooit gebruiken, dus is niet mijn probleem:p.

Als het zo zou zijn dat je er niet echt achter moet zoeken mag je wel altijd een linkje naar een voorbeeld of wat uitleg geven o.i.d., ga het toch niet doen, maar ben wel nieuwschierig naar hoe het dan zou moeten gedaan worden:p.

Aanvulling

Je was me voor met je linkje, bedankt in elk geval:):p
Deze tekst werd het laatst bewerkt voor 5.31 % door k_a_lf op maandag 7 december 2009 om 17:00:01.
Er zijn heel wat mensen, die veel weten en weinig begrijpen.
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen