Avatar billede hairboy1234 Nybegynder
26. august 2003 - 14:47 Der er 7 kommentarer og
1 løsning

Upload Script

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD="POST">
  The file:
  <INPUT TYPE="file" NAME="userfile">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>

<?php
$path = "files/";
$max_size = 1000000;

if (!isset($HTTP_POST_FILES['userfile'])) exit;

if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if ($HTTP_POST_FILES['userfile']['size']>$max_size) { echo "The file is too big<br>\n"; exit; }
if (($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg") || ($HTTP_POST_FILES['userfile']['type']=="application/x-zip-compressed") || ($HTTP_POST_FILES['userfile']['type']=="application/msword") || ($HTTP_POST_FILES['userfile']['type']=="text/plain") || ($HTTP_POST_FILES['userfile']['type']=="application/octet-stream")) {

if (file_exists($path . $HTTP_POST_FILES['userfile']['name'])) { echo "The file already exists<br>\n"; exit; }

$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .
$HTTP_POST_FILES['userfile']['name']);
if (!$res) { echo "upload failed!<br>\n"; exit; } else { echo "<b>Upload sucessful</b><br>\n"; }

} else { echo "Wrong file type<br>\n"; exit; }

}

?>
Jeg vil godt have tilføjet en funktion til ovenstående upload script. Systemet skal rename den nyoploadede fil til et tilfældigt navn. Jeg går ud fra at jeg kan bruge dette:

  rename("files/$filename", "files/$newfilename");

Problemet er at jeg ikke kan finde udaf hvordan jeg får fat i files oprindelige navn. Nedestående giver kun filens navn og ikke typen (.*).

$filename=$HTTP_POST_FILES['userfile']['name'];


Jeg har prøvet $HTTP_POST_FILES['userfile']['type']; men denne giver blot en text såsom "image/pjpeg".
Avatar billede detox Nybegynder
26. august 2003 - 15:04 #1
Måske kan du få filens extension sådan her:

$end = array_pop(explode(".", $HTTP_POST_FILES['userfile']['tmp_name']));

og så kunne du jo bruge move_uploaded_file() i stedet for at kopiere og omdøbe.
Avatar billede Slettet bruger
26. august 2003 - 15:08 #2
['userfile']['name'] burde altså indeholde filens navn inklusiv extension.
Avatar billede Slettet bruger
26. august 2003 - 15:09 #3
Prøv en simpel test ala:

<? var_dump($_FILES); ?>
<html>
    <body>
        <form enctype="multipart/form-data" method="POST">
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
        </form>
    </body>
</html>

Udskift $_FILES med $HTTP_POST_FILES hvis PHP version < 4.1.0
Avatar billede sukos Juniormester
26. august 2003 - 15:11 #4
pathinfo() virker kun fra ver. 4.0.3

$filtype = pathinfo($HTTP_POST_FILES['upfile']['name']);
$newname = "nytnavn.". $filtype["extension"];

move_uploaded_file($HTTP_POST_FILES['upfile']['tmp_name'], $path . $newname);
Avatar billede hairboy1234 Nybegynder
26. august 2003 - 15:32 #5
Detox din løsning virkede. Giv mig et svar så du kan få nogle point.

Tak for hjælpen til jer andre.
Avatar billede detox Nybegynder
26. august 2003 - 15:33 #6
Tak for point.
Avatar billede Slettet bruger
26. august 2003 - 15:40 #7
Jeg synes nu forsat, det lyder meget besynderligt at ['userfile']['name'] ikke indeholder både navn og extension. Det burde den.
Avatar billede hairboy1234 Nybegynder
26. august 2003 - 15:51 #8
mercur8 -> Det gjore den faktisk også. Det var ikke helt så kompliceret som jeg huskede. Det egetlige problem var bare at få sepereret extension fra $filename så jeg havde den til det nye filnavn.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester