[php] upload script, plaatjes ok, maar nu *.doc

Pagina: 1
Acties:
  • 252 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
ik heb het volgende script:
code:
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
<html> 
<head> 
<title>Upload</title> 
</head> 
<body bgcolor="#000000" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" text="#FFFFFF"> 
<div align="center"> 
  <center> 
 
<?php 

   if($submit && $userfile != "none") { 
        $thefilesize = filesize("inc.php"); 
        $filenum = fopen("inc.php","r"); 
        $nr = fread($filenum, $thefilesize+1); 
        fclose($filenum); 
        $nr++; 
        $filenum = fopen("inc.php","w"); 
        fwrite($filenum,$nr); 
        fclose($filenum); 
        move_uploaded_file($userfile,  "images/$nr.$file_type"); 
echo"You will find your image on:<br><input style='background: #dddddd; border-color: 003366; font-family: Verdana; color: 000000; border-width: 1; font-size: 12px; border-height: 1; border-style: solid' size=\"70\" value="; 
        echo "lalala padje/$nr.$file_type"; 
echo" name=\"wert\">"; 
   } 

   ?> 
   <FORM ENCTYPE="multipart/form-data" ACTION="index.php" METHOD=POST> 
    File to upload: <INPUT style='background: #dddddd; border-color: 003366; font-family: Verdana; color: 000000; border-width: 1; font-size: 12px; border-height: 1; border-style: solid' NAME="userfile" TYPE="file"><br> 
    Type of file:  <br> 
        <input type="radio" value="jpg" checked name="file_type">JPG<br> 
    <input type="radio" value="png" name="file_type">PNG<br> 
    <input type="radio" value="doc" name="file_type">doc<br>
    <input type="radio" value="gif" name="file_type">GIF<br><br> 
    <INPUT TYPE="submit" style='background: #dddddd; border-color: 003366; font-family: Verdana; color: 000000; border-width: 1; font-size: 12px; border-height: 1; border-style: solid' VALUE="Versturen" name="submit"> 
   </FORM></font> 
  </center> 
</div> 
</body> 
</html>

maar eigenlijk wil ik niet alleen plaatjes uploaden dus ik dacht ik zet ff de extensie .doc erbij, kijken of dat werkt.
hij upload wel iets, maar daarna is het niet meer bruikbaar.
weet iemand hoe je de code kan aapassen zodat hij wel docs upload? plaatjes hoeven dan niet zo nodig meer...

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Kan je ook aangeven waarom 'Hij doet 't niet'??? Begin trouwens eerst eens met $_FILES, $_POST en $_GET te werken, wellicht helpt dat al een hoop. Verder standaard debuggen: kijk eens op http://nl.php.net/manual/en/features.file-upload.php voor errorcodes en zo en wat je nog meer kan controleren of iets goed is gegaan.

Verwijderd

Het afhandelen van php bestanden doe ik best wel heel anders. Begrijp eigenlijk niet goed wat je nu allemaal met die code wilt doen.

Nadat iemand op submit heeft geklikt komt hij dus weer bij index.php aan met een array $_FILES['userfile']. Hierin staat ook het type (als mimetype).

Je hoeft die type dus niet als een radio button mee te sturen.

Bij de phpcode doe je iets als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// controleren of element userfile in array zit
if (array_key_exists("userfile", $_FILES)) {

  //controleren of userfile een array is
  if (is_array($_FILES['userfile'])) {

     //type exploden
     $type = explode('/', $_FILES['userfile']['type'];

     // nu heb je een array met daarin de mimetype als element 0 en 1
     if ($type[0]=='image') echo 'afbeelding';
     
      // eventueel controleren wat voor type afbeelding
      if ($type[1]=='gif') echo 'gif :)';
  }
}


je kunt dan aan de hand van die if statements bepalen waar hij naartoe verplaatst moet worden met move_uploaded_file.

Om nu de mime-type te bepalen van een .doc bestand zul je die gewoon ff moeten printen

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

willempiet
Deze code gaat sowieso nergens over... Ik ben benieuwd hoeveel je daar zelf van gemaakt hebt. Leg het eens regel voor regel uit.... 'like i'm a five year old'

[ Voor 6% gewijzigd door drm op 19-02-2004 09:45 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
uh het script werkt prima hoor,
alleen ik snap gewoon niet waarom het niet werkt als je een bestand met de extensie doc wilt uppen, dan doet hij het namelijk ook wel,
alleen als je dat bestand dan weer download en wilt openen dan is het een coruupt bestand geworden..

[ Voor 35% gewijzigd door Verwijderd op 19-02-2004 10:08 ]


Verwijderd

Topicstarter
nou ok jullie kritiek in de praktijk:

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
<?php
if ($HTTP_POST_VARS['submit']) {
  print_r($HTTP_POST_FILES);
  if (!is_uploaded_file($HTTP_POST_FILES['file']['tmp_name'])) {
    $error = "You did not upload a file!";
    unlink($HTTP_POST_FILES['file']['tmp_name']);
    } else {
    //a file was uploaded
    $maxfilesize=102400;

    if ($HTTP_POST_FILES['file']['size'] > $maxfilesize) {
      $error = "file is too large";
      unlink($HTTP_POST_FILES['file']['tmp_name']);
      } else {
      if ($HTTP_POST_FILES['file']['type'] != "application/msword" AND $HTTP_POST_FILES['file']['type'] != "image/pjpeg") { 
        $error = "This file type is not allowed";
        unlink($HTTP_POST_FILES['file']['tmp_name']);
         } else {
       
       copy($HTTP_POST_FILES['file']['tmp_name'],"/ghhc/html/test/upload4/".$HTTP_POST_FILES['file']['name']);
       unlink($HTTP_POST_FILES['file']['tmp_name']);
       print "File has been successfully uploaded!";
       exit;
     }
    } 
  }
}
?>

<html>
<head></head>
<body>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
<?=$error?>
<br><br>
Choose a file to upload:<br>
<input type="file" name="file"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>


dit geeft de volgende foutmelding:

code:
1
2
3
4
Array ( [file] => Array ( [name] => Beware.doc [type] => application/msword [tmp_name] => /tmp/phphVIQZQ [error] => 0 [size] => 24576 ) ) 
Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 637 is not allowed to access / owned by uid 0 in /home/virtual/site116/fst/var/www/html/test/upload4/index.php on line 24

Warning: copy(/html/test/upload4/Beware.doc): failed to open stream: No such file or directory in /home/virtual/site116/fst/var/www/html/test/upload4/index.php on line 24


ik denk dus dat die safe mode anders moet worden ingesteld? zoja kan iemand dit bevestigen dan neem ik contact op met m'n host :)

[ Voor 33% gewijzigd door Verwijderd op 19-02-2004 11:05 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Als je move_uploaded_file() gebruikt i.p.v. copy() heb je afaik geen last van safe mode restrictions

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
mmz moet ik dan gewoon die copy regel vervangen voor:

$temp="/ghhc/html/test/upload4/";
move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'], $temp)

dat werkt niet echt..

[ Voor 27% gewijzigd door Verwijderd op 19-02-2004 12:00 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

dat werkt niet echt..
Dus? Foutmelding? Waarschuwing? Resultaat?

Wees eens een beetje duidelijker ...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

offtopic:
if ($HTTP_POST_VARS['submit']) :X

Intentionally left blank


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Het lijkt me niet zo kunnen zijn dat alle extensies wel goed gaan, maar .doc toevallig niet. Raar dat-ie geen permission-errors gaf op de andere extensies. Of heb je toevallig gemigreerd naar een andere server en daar alleen .doc getest en de rest niet?

[ Voor 47% gewijzigd door sjroorda op 19-02-2004 18:12 ]


Verwijderd

Topicstarter
dat eerste script doet het met plaatjes wel goed maar met doc niet idd, ik weet niet waarom
die 2e doet het helemaal niet, zie die error,

ik weet best dat ik geen php freak ben dus zeggen dat alles fout is is heel makkelijk,
maar ik ben nu al een hele tijd bezig en het lukt gewoon niet
dus een beejte hulp zou ik wel waarderen

Verwijderd

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
57
58
59
<?php

 $file_dir="";
 $url_prefix="http://www.your-domain.nl/";
 $max_kilobytes = 200;

 if($userfile && $newname)
 {
    $userfile_name=basename($userfile_name);

    if(stristr($userfile_name, ".php"))
    {
        die("Sorry you are not allowed to upload php-scripts.");
    }

    if ($userfile == "none") // image > $max_kilobytes
    {
        echo "Image rejected: exceeds max size ($max_kilobytes k) - please upload a smaller image";
    } else {

        if (file_exists($file_dir.$newname))
        {
            echo "Image rejected: a file called '$newname' already exists - please choose another name.";
        } else {
            if (copy($userfile, $file_dir.$newname))
            {
                unlink($userfile);
                echo "File successfully uploaded! Image is now located at:<br><br>";
                echo "$url_prefix$newname<br><br>";
                echo "Example:<br><br>[img]\"$url_prefix$newname\"[/img]";
            } else {
                echo "Upload failed...";
            }
        }
    }
 }

 ?>

 <form enctype="multipart/form-data" action="upload.php" method=post>

 <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo ($max_kilobytes * 1000); ?>">

 <p>
    Select file to upload:<br>
    <input name="userfile" type="file" style="font-family: Verdana; font-size: 8pt; background-color: #C0C0C0; border-style: solid; border-color: #E8E8E8"><br>
    (Images should be 300 pixels wide or less and under <?php echo $max_kilobytes; ?>k)
 </p>

 <p>
    Call this file:<br>
    <input type="text" name="newname" value="xxx.jpg" style="font-family: Verdana; font-size: 8pt; background-color: #C0C0C0; border-style: solid; border-color: #E8E8E8"><br>(Make sure this is a unique name! Must end with .jpg or .gif)<br>
 </p>

 <input type="submit" value="Send file" style="font-family: Verdana; font-size: 8pt; background-color: #C0C0C0; border-style: solid; border-color: #E8E8E8">
 </form>
 </font>
 </body>
 </html>


doc toevoegen en je bent klaar.. (code mag wel beetje netter worden opgemaakt maar had ik ff geen zin in je begrijpt t id)..

[ Voor 16% gewijzigd door Verwijderd op 19-02-2004 18:43 ]

Pagina: 1