[PHP] Probleem met upload-script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben aan het proberen zelf een upload script in elkaar te zetten.

dit is wat ik tot nu toe heb:

de html code van de upload.html
code:
1
2
3
4
5
6
7
8
9
10
<Html>
 <Head>
 </Head>
 <Body>
  <form enctype="multipart/form-data" action="upload.php" method="POST"> 
   <input type="file" name="my_file"><br> 
   <input type="submit" value="Upload!"> 
  </form> 
 </Body>
</Html>


Dit is de code van upload.php:
code:
1
2
3
4
5
6
7
8
9
10
11
<?php
 $str1 = is_uploaded_file($_FILES['my_file']['tmp_name']);
 $str2 = $_FILES['my_file']['tmp_name'];
 $uppath = "c:\\uploaded";
  
 echo "$str1\n<br>";
 echo "$str2\n<br>";

 move_uploaded_file($str2,$uppath); 

?>


Ik krijg dus na het uploaden te zien:

1 (geeft dus aan dat de file wel geupload is)
C:\Program Files\Web Server\PHP\uploadtemp\phpA08.tmp (de temp-file word dus gemaakt)

en dan:
Warning: move_uploaded_file(c:\uploaded) [function.move-uploaded-file]: failed to create stream: Permission denied in C:\Program Files\Web Server\htdocs\php\upload.php on line 9

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Program Files\Web Server\PHP\uploadtemp\phpA09.tmp' to 'c:\uploaded' in C:\Program Files\Web Server\htdocs\php\upload.php on line 9


Het draaid onder win2000 en ik heb gekeken naar de permissions, maar volgensmij kloppen die wel. wat doe ik verkeerd ? (ik heb ipv move_uploaded_file() ook al de gewone copy() geprobeerd, maar die geeft dezelfde fout)

[ Voor 12% gewijzigd door Verwijderd op 22-01-2003 20:20 ]


Acties:
  • 0 Henk 'm!

  • Glock
  • Registratie: November 2001
  • Niet online
toch permissie probleem of windows / php pakt je slash niet goed, je kan de "\\" proberen te veranderen in \ of /

misschien dat dat helpt

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb al vanalles met / en \ geprobeerd maar tot nu toe nog niets...
(ik heb trouwens in de php.ini wel die file_uploads = On staan, dus daar kan het ook niet aan liggen)

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
Volgens mij moet je ook meteen aangeven hoe het bestand moet gaan heten.

mijn eigen code staat:

PHP:
1
move_uploaded_file($_FILES['bestand']['tmp_name'], "D:/web/inc/rooster.txt");


so try it

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Groentenboer schreef op 22 January 2003 @ 20:33:
Volgens mij moet je ook meteen aangeven hoe het bestand moet gaan heten.

mijn eigen code staat:

PHP:
1
move_uploaded_file($_FILES['bestand']['tmp_name'], "D:/web/inc/rooster.txt");


so try it
thnx dude !
het werkt nu dus wel :)

Acties:
  • 0 Henk 'm!

  • The Gamblers
  • Registratie: Januari 2001
  • Laatst online: 11:52
Verbouw deze maar naar je eigen behoefte. Draait bij mij al lange tijd. Stuurt je een mailtje als er een file is geupload en kijkt voor de layout naar mainstyle.css

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
54
55
56
<?
$archive_dir = "e:\fileserver\upload";
function upload_form() {
   global $PHP_SELF;
?>
<CENTER><FORM METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA"
   ACTION="<? echo $PHP_SELF ?>" class="font">
   <INPUT TYPE="HIDDEN" NAME="action" VALUE="upload">
    Klik op bladeren om het bestand aan te wijzen</CENTER><BR><BR>
   <CENTER><INPUT TYPE="FILE" NAME="userfile" class="fields"></CENTER><BR><BR>
   <CENTER><INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="upload" class="buttons"></CENTER>
</FORM>
<?
}

function upload_file() {
   global $userfile, $userfile_name, $userfile_size,
         $userfile_type, $archive_dir, $WINDIR;

   if(isset($WINDIR)) $userfile = str_replace("\\\\","\\", $userfile);

   $filename = basename($userfile_name);

   if($userfile_size <= 0) die ("$filename is empty.");

   if(!@copy($userfile, "$archive_dir/$filename"))
      die("Can't copy $userfile_name to $filename.");

   if(!isset($WINDIR) && !@unlink($userfile))
      die ("Can't delete the file $userfile_name.");
$msg = "Er is een upload gedaan.\n\n";
        $msg .= "Filename:\t$filename\n";
        $msg .= "Filetype:\t$userfile_type\n";
        $msg .= "Filesize:\t" . number_format($userfile_size) . "\n\n";
        $to = "vulhier@jeeigenmailadres.in";
        $subject = "Er is een upload gedaan";
        @mail("$to", "$subject", "$msg");
        @mail("$cc", "$subject", "$msg");
   echo "$filename is succesvol geupload.<BR>";
   echo "Filesize: " . number_format($userfile_size) . "<BR>";
   echo "Filetype: $userfile_type<BR>";
}
?>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="mainstyle.css" type="text/css">
<TITLE>Bestand uploaden</TITLE></HEAD>
<BODY class="body">
<body BGCOLOR="000000">
<?
if($action == 'upload') upload_file();
else upload_form();
?>
</BODY>
</HTML>

Console Guy


Acties:
  • 0 Henk 'm!

  • The Gamblers
  • Registratie: Januari 2001
  • Laatst online: 11:52
Groentenboer schreef op 22 januari 2003 @ 20:33:
Volgens mij moet je ook meteen aangeven hoe het bestand moet gaan heten.

mijn eigen code staat:

PHP:
1
move_uploaded_file($_FILES['bestand']['tmp_name'], "D:/web/inc/rooster.txt");


so try it
Net te laat met mijn scriptje. Hierin kun je dus wel zien dat je niet de bestandsnaam op hoeft te geven

Console Guy


Acties:
  • 0 Henk 'm!

Verwijderd

basmaaks schreef op 22 januari 2003 @ 20:41:
[...]


Net te laat met mijn scriptje. Hierin kun je dus wel zien dat je niet de bestandsnaam op hoeft te geven
en wat doe je hier dan:
PHP:
1
if(!@copy($userfile, "$archive_dir/$filename"))

[ Voor 4% gewijzigd door Verwijderd op 22-01-2003 20:43 ]


Acties:
  • 0 Henk 'm!

  • The Gamblers
  • Registratie: Januari 2001
  • Laatst online: 11:52
Daar kopier ik het bestand met de orginele bestandsnaam i.p.v. zoals bij jou met een vooraf vastgelegde naam.

Console Guy


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
ja, boeie, dat maakt toch nix uit? feit is dat je de naam op moet geven...

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • The Gamblers
  • Registratie: Januari 2001
  • Laatst online: 11:52
Voor ons is dit wel duidelijk maar ook voor de topicstarter ? Daar ging het mij eigenlijk om

Console Guy


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
topicstarter heeft hem werkend, dus hij zal t wel snappen!

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja, ik snap het wel, alleen nu wil het weer niet werken :)

ik probeer dus de filename te krijgen van het originele bestand
volgens de handleiding zou dat hiermee moeten gaan:

code:
1
$_FILES['my_file']['name']


maar dan krijg ik:
Parse error: parse error, unexpected T_VARIABLE in C:\Program Files\Web Server\htdocs\php\upload.php on line 4

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
wat is je source op dit moment gebruik [ php]-tag want die var moet gewoon werken, of je bent op de regel ervoor een ; vergeten ;)

De enige err die je kan krijgen is een undefined index geen parse err iig

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmm, ik snap het echt niet meer :/ (kan aan mij liggen :P )

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
 $str1 = is_uploaded_file($_FILES['my_file']['tmp_name']);
 $str2 = $_FILES['my_file']['tmp_name'];
 $str3 = $_FILES['my_file']['name'];
 $str4 = "C:\uploaded\ $str3"

 echo "$str1\n<br>";
 echo "$str2\n<br>";
 echo "$str3\n<br>";
 echo "$str4\n<br>";
?>


dit werkt niet ?
Parse error: parse error, unexpected T_ECHO in C:\Program Files\Web Server\htdocs\php\upload.php on line 7

edit: aaargh, ik zie em nu pas |:(

[ Voor 22% gewijzigd door Verwijderd op 22-01-2003 21:12 ]


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
je bent een ; achter regel 5 vergeten

[edit] en haal de spatie op regel 4 eens weg

[ Voor 40% gewijzigd door Hmmbob op 22-01-2003 21:21 ]

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het script werkt nu perfect, mijn dank aan iedereen die geholpen heeft :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

 $is_uploaded = is_uploaded_file($_FILES['my_file']['tmp_name']);

 if ($is_uploaded == "1"){
  $temp_name = $_FILES['my_file']['tmp_name'];
  $orig_name = $_FILES['my_file']['name'];
  $new_name = "C:\\uploaded\\$orig_name";

 echo "File uploaded.\n<br>";
 echo "$new_name\n<br>";

 move_uploaded_file($temp_name,$new_name);
}
?>

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
unexpected betekent onverwacht dus hij had geen echo verwacht dan had je toch zelf ook wel kunnen bedenken dat je vorige opdracht niet goed werd afgesloten :)

*zoals ik hierboven ook al zei* :P
Pagina: 1