2013-07-25 2 views
-1

//uploadForm.htmlpas le téléchargement dans le répertoire temp

<html> 
    <body> 
     <form action="upload_file.php" method="post" enctype="multipart/form-data"> 
      <label for="browseFile">Filename : </label> 
      <input type="file" name="file" id="browseFile"><br> 
      <input type="submit" name="submit" value="Submit"> 
    </body> 
</html> 

//upload_file.php

<?php 
    $allowedExt = array("png","jpg"); 
    $temp = explode(".",$_FILES["file"]["name"]); 
    $extension = end($temp); 
    echo "uploading..."; 
    if((($_FILES["file"]["type"]=="image/png") || ($_FILES["file"]["type"]=="image/jpg")) && ($_FILES["file"]["size"] < 1000000)) 
    { 
     echo "success"; 
     if($_FILES["file"]["error"] > 0) 
     { 
      echo "error in uploading" . $_FILES["file"]["error"]."<br>"; 
     } 
     else 
     { 
      echo "<p>uploaded successfully</p>"; 
     } 
    } 
    else 
     echo "invalid file" ; 

    echo $_FILES["file"]["name"]."stored in ".$_FILES["file"]["tmp_name"]."<br>"; 
    move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/".$_FILES["file"]["name"]); 
    echo "moved Successfully"; 

?> 

Lorsque je tente de faire écho le nom du répertoire temporaire, il est vide. Les fichiers téléchargés sont manquants. Je ne l'obtiens pas dans le dossier MAMP/htdocs ni dans le répertoire /tmp/.

Je n'ai pas de répertoire uploads dans /MAMP/htdocs/. Le programme crée-t-il un répertoire s'il n'existe pas?

+0

Et honte à tous ceux qui a répondu à la pêche pour rep pas cher et facile. points. –

+1

@STTLCU et honte à vous pour ne rien expliquer pour aider les gens à apprendre. –

+0

@ CarlosCampderrós Je me soucie plus de la valeur de cette communauté plutôt que de la valeur des codeurs paresseux. J'aiderai volontiers qui montre l'effort dans ses recherches et donc celui qui respecte réellement MON TEMPS ET EFFORT pour répondre. Les vampires et les codeurs paresseux ne sont pas les bienvenus ici. –

Répondre

1

Dans vos instructions finales, vous avez $_FILES['name']['tmp_name'] au lieu de $_FILES['file']['tmp_name'].

Par ailleurs, vous avez quelques erreurs dans votre script:

  1. Même si quelqu'un télécharge un fichier non valide, vous les afficher un message d'erreur, mais vous vous déplacez toujours le dernier lieu.
  2. $_FILES["file"]["type"] est une valeur envoyée par le navigateur (c'est-à-dire: le client). Un attaquant malveillant peut vous envoyer n'importe quel type de fichier et le déguiser en image/png, et vous lui faites confiance. Vous ne pouvez pas faire confiance à cette valeur. Au lieu de cela, vous pouvez utiliser getimagesize, qui vous renvoie un tableau qui a le type mime de l'image (et est détecté par le serveur (par exemple: par vous) .Pour détecter le type mime de non-images, vous pouvez utiliser FileInfo, concrètement finfo_file.

en outre, le script php ne va pas créer votre dossier uploads si elle n'existe pas, et au lieu affichera une erreur (et ne rien faire). Vous devez créer ce dossier en premier lieu, et assurez-vous que le l'utilisateur exécutant votre script php (généralement le même que celui qui exécute votre serveur http) a les permissions d'écriture sur ce répertoire

éditer: Vous ne voyez aucun fichier téléchargé dans votre répertoire temporaire parce que (en citant http://www.php.net/manual/en/features.file-upload.post-method.php):

Le fichier sera supprimé du répertoire temporaire à la fin de la demande si elle n'a pas été déplacé ou renommé.

0

$_FILES["name"]["tmp_name"] n'existe pas, il devrait être $_FILES["file"]["tmp_name"]

0
$allowedExt = array("png","jpg"); 
echo $temp = explode(".",$_FILES["file"]["name"]); 
$extension = end($temp); 
echo "uploading..."; 

if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } 
else 
    { 

    move_uploaded_file($_FILES["file"]["tmp_name"], 
    "upload/" . $_FILES["file"]["name"]); 
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 
Questions connexes