Toon posts:

[PHP] Script geeft verkeerde naam weer na uploaden

Pagina: 1
Acties:

Verwijderd

Topicstarter
k ben bezig een klein projectsysteempje te maken en nu wil ik graag ook foto's kunnen oploaden. Nu heb ik zelf een Apachewebserver op Win 98 draaien. Ik heb een kleine test gedaan door het bestand Linkin Park - In The End.mp3 van mijn desktop naar de map waar mijn script staat te uploaden, maar niet, zodat deze zijn eigen naam behoud. Er wordt Resource id #1094. Linkin Park - In The End.mp3 als bestandsnaam weergeven i.p.v. Linkin Park - In The End.mp3.
Ik wil dat elk bestand dat wordt upgeload zijn eigen naam behoudt.

Dit is de code die ik niet zelf heb geschreven, maar wel moest aanpassen (foutje). Wat is hier dus fout aan? ($userfile[$i] wordt hiervandaan gehaald :

<table><form method="post" action="itemtoevoegen.php4" enctype="multipart/form-data">
<tr><td> <input name="userfile[]" type="file"> </td></tr>
<tr><td> <input name="userfile[]" type="file"> </td></tr>
<tr><td> <input name="userfile[]" type="file"> </td></tr>
<tr><td> <input name="userfile[]" type="file"> </td></tr>
<tr><td> <input name="userfile[]" type="file"> </td></tr>
<tr><td> <input name="userfile[]" type="file"> </td></tr>
<tr><td> <input type="submit" value="Upload!!!"></tr>
</form>
</table>
</form>
</html>



Ik kreeg deze reactie:
"$UPLOAD is gewoon een resource identifier en wel een filehandler."

Dit houdt toch in dat je daar gewoon c:/mijnmap/ditbestand.gif kunt neerzetten (ik heb dus niet veel/geen ervaring met filesystem functies)?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
for($i=0;$i<sizeof($userfile);$i++) 
   {  
     if(!$userfile_size[$i]) 
       continue; 
     $UPLOAD = fopen( $userfile[$i], "r" ); 
     $contents = fread( $UPLOAD,$userfile_size[$i]);     
     fclose( $UPLOAD );   
     $SAVEFILE = fopen("$UPLOAD".$userfile_name[$i], "wb" ); 
     fwrite( $SAVEFILE, $contents,$userfile_size[$i] );  
     fclose( $SAVEFILE );     
  }     
  echo "Server HaD Receive the Upload Files!"; 
?>

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Kijk dus nog even naar move_uploaded_file();

$upload bevat verder niet de naam van de file maar de identifier van het geheugen plekje waar php moet kijken als je een bewerking op die file wilt loslaten.

Verwijderd

Topicstarter
Hiermee kun je toch alleen maar het bestand verplaatsen? Ik wil juist een bestand alleen uploaden en dat hij dan meteen de goede naam heeft, of gebeurt dat nadat ik hem heb verplaatst (lijkt me niet). Ik zie niet in waar je het vandaan haalt dat ik iets wil verplaatsen (ik upload iets naar mijn localhost dat op mijn bureaublad staat).


move_uploaded_file
(PHP 4 >= 4.0.3)

move_uploaded_file -- Moves an uploaded file to a new location.
Description

bool move_uploaded_file (string filename, string destination)


This function is available only in versions of PHP 3 after PHP 3.0.16, and in versions of PHP 4 after 4.0.2.

This function checks to ensure that the file designated by filename is a valid upload file (meaning that it was uploaded via PHP's HTTP POST upload mechanism). If the file is valid, it will be moved to the filename given by destination.

If filename is not a valid upload file, then no action will occur, and move_uploaded_file() will return false.

If filename is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return false. Additionally, a warning will be issued.

This sort of check is especially important if there is any chance that anything done with uploaded files could reveal their contents to the user, or even to other users on the same system.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 27 april 2002 17:44 schreef gang-ster het volgende:
Hiermee kun je toch alleen maar het bestand verplaatsen? Ik wil juist een bestand alleen uploaden en dat hij dan meteen de goede naam heeft, of gebeurt dat nadat ik hem heb verplaatst (lijkt me niet). Ik zie niet in waar je het vandaan haalt dat ik iets wil verplaatsen (ik upload iets naar mijn localhost dat op mijn bureaublad staat).
Wat wil je nu precies?
Files uploaden toch?
De files die je upload worden door php van een nietszeggende naam voorzien totdat je er wat mee doet. Bijvoorbeeld een rename actie (maar moven is hetzelfde als rename in veel gevallen).

Je hoeft voor mij niet de php-manual entry van move_uploaded_file te quoten hoor, die heb ik meerdere malen gelezen en toegepast.
[edit]
En de routine die jij uitvoert is gewoon precies datgene wat move_uploaded_file doet...

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

btw, als je de file niet uit je tmp directory moved (waar je uploaded files terecht komen) dan wist het systeem die vanzelf weer.

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
Ik zal er vanavond eens naar kijken door move_uploaded file te gebruiken. Ik dacht dat het gewoon zo was van uploaden en klaar, maar dat is dus niet zo. Maar alvast bedankt :)
Pagina: 1