2013-07-25 2 views
-1

//uploadForm.htmlPHP файл не загружая временную директорию

<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"; 

?> 

Когда я пытаюсь повторить имя каталога темп, он пустой. Загруженные файлы отсутствуют. Я не получаю его в папке MAMP/htdocs ни в /tmp/.

У меня нет uploads в каталоге /MAMP/htdocs/. Разве программа не создает каталог, если он не существует?

+0

И позор всем, кто ответил на рыбалку на дешевый и простой респ. точки. –

+1

@STTLCU и стыдно за то, что вы ничего не объяснили, чтобы помочь людям учиться. –

+0

@ CarlosCampderrós Я больше забочусь о ценности этого сообщества, а не о ценности ленивых кодеров. Я с удовольствием помогу тем, кто показывает усилия в его/ее исследованиях и, следовательно, кто действительно уважает МОЕ ВРЕМЯ И УСИЛИЯ для ответа. Вампиров и ленивых кодеров здесь не приветствуют. –

ответ

1

В ваших окончательных инструкций, вы должны $_FILES['name']['tmp_name'] вместо $_FILES['file']['tmp_name'].

Кстати, у вас есть несколько ошибок в сценарии:

  1. Даже если кто-то загружает недопустимый файл, вы показываете им сообщение об ошибке, но вы все-таки перенести его на итоговое место.
  2. $_FILES["file"]["type"] - значение, отправленное браузером (то есть: клиент). Злоумышленник может отправить вам любой файл и замаскировать его как image/png, и вы доверяете ему. Вы не можете доверять этому значению. Вместо этого вы можете использовать getimagesize, который возвращает вам массив с типом mime изображения (и обнаруживается сервером (т. Е. Вами). Чтобы обнаружить тип изображений non-изображений mime, вы можете использовать FileInfo, конкретно finfo_file.

Кроме того, сценарий PHP не будет создавать папку uploads, если она не существует, а вместо этого появится сообщение об ошибке (и ничего не делать). Вы должны создать эту папку первой, и убедитесь, что Пользователь, запускающий ваш php-скрипт (обычно тот же, что работает на вашем http-сервере), имеет права на запись в этом каталоге.

Редактировать: вы не видите загруженный файл в своем каталоге тем, поскольку (цитирование http://www.php.net/manual/en/features.file-upload.post-method.php):

Файл будет удален из временного каталога в конце запрос, если он не был перемещен в сторону или переименован.

0

$_FILES["name"]["tmp_name"] не существует, она должна быть $_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"]; 
    } 
Смежные вопросы