почему моя форма принимает только файлы .jpeg - PullRequest
0 голосов
/ 27 марта 2011

Я сделал эту форму:

   <form enctype="multipart/form-data" action="php/handler.php" method="post" name="uploaderform">
    <table>
    <tr><td align="right">File:</td><td><input type="hidden" name="MAX_FILE_SIZE" value="30000"/><input type="file" name="filetoup" id="zzz"/></td></tr>
    <tr><td align="right">Folder:</td><td><select id="category" name="category"><option value="foo/">some</option><option value="poo/">some2</option></select></td></tr>
    <tr><td></td><td><input type="submit" value="Upload" /></td></tr>
    </table>
  </form>

и этот скрипт PHP:

if((exif_imagetype($_FILES["filetoup"]["tmp_name"])==IMAGETYPE_GIF)
||(exif_imagetype($_FILES["filetoup"]["tmp_name"])==IMAGETYPE_JPEG)
||(exif_imagetype($_FILES["filetoup"]["tmp_name"])==IMAGETYPE_PNG)
&&($_FILES["filetoup"]["size"]<2000000)){
if($_FILES["filetoup"]["error"]>0)
    echo $_FILES["filetoup"]["error"];
else {

    if(isset($_FILES["filetoup"]["name"]))
        $target_path=$folder . basename($_FILES["filetoup"]["name"]);
    else
        echo "Choose a file";

    if(move_uploaded_file($_FILES["filetoup"]["tmp_name"],$target_path))
        echo $_FILES["filetoup"]["name"] . "uploaded";
    else
        echo "Either you fucked up or I did";
    }
 }else{
echo "read whats under the form";
 }

и я могу загружать только файлы .jpeg, .gif и .png не принимаются, и я получаю эту ошибку:

Warning: exif_imagetype() [function.exif-imagetype]: Filename cannot be empty in      C:\xampp\htdocs\atthepc\php\handler.php on line 7

Я думаю, что это что-то из моей формы, потому что я могу загрузить .jpeg без каких-либо ошибок, но .gif и .png нет. Если я не прав, что тогда вызывает это? И есть решение или я все делаю не так?

И, наконец, .jpg распознается как .jpeg?

/ редактировать

Не думаю, что я правильно объяснил, что если я пытаюсь загрузить файл JPEG, он работает нормально, но если я пытаюсь использовать любой другой тип файла, он дает мне имя файла не может быть пустым, поэтому моя форма не хочет принимать gif и отправить его по почте, как будто сообщение пусто. почему это происходит?

// редактировать и да, вот и все, я попробовал это

$something=$_FILES["filetoup"]["tmp_name"];
var_dump($something);

и это дает мне строку (0) "". форма не хочет принимать это, но почему? я не накладывал никаких ограничений на форму.

/// редактировать

Я обнаружил, что у меня проблема: он не принимает файлы другого типа, потому что я пытался загрузить слишком большой файл (анимированный GIF-файл), а max_file_size слишком мало.

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

используйте регистр переключателей, инсталированный из всех if, и установите $ target_path в регистр для каждого jpeg, png и gif, если они должны находиться в разных папках ... и установите значение по умолчанию как ошибку, если файл изображения tmp aintразрешено ..

только один способ сделать это, надеюсь, это поможет

0 голосов
/ 27 марта 2011

может быть, попытаться сравнить тип с оператором IF вместо tmp_name с exif_imagetype? $ _FILES [ "filetoup"] [ "тип"]) == IMAGETYPE_GIF

Кроме того, re JPEG, w3schools.com упоминает , что: «Примечание: для IE для распознавания файлов jpg тип должен быть pjpeg, для FireFox - jpeg» так что, может быть, это что-то посмотреть на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...