PHP:当用户上传带有不允许的扩展名的图像时,文件扩展名为空

Pancake_M0nster

我的网站上有一个表格,除其他所有内容外,它还允许用户将图像上传到网站。HTML和PHP:

<html>
<body>
<?php  
if($_SERVER['REQUEST_METHOD'] == 'POST'){
  $error = '';

  // Checking other input fields...

  // If anything else is valid, try to upload file (to avoid uploading useless c**p)
  if(isset($_FILES['file']) && $error == '' && $_FILES['file']){
    $file = $_FILES['file'];
    $file_name = $file['name'];
    $file_tmp = $file['tmp_name'];
    $file_size = $file['size'];
    $file_error = '';
    echo $file . $file_name . $file_tmp . $file_size;
    $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
    if($file_ext != 'png' && $file_ext != 'jpg' && $file_ext != 'jpeg' && $file_ext != 'gif' && $file_ext != 'bmp'){
      $file_error .= "<br>Only png, jpg, jpeg, gif and bmp formats allowed!";
    }
    if($file_size > 1048576){ // << 1MB in bytes
      $file_error .= "<br>Maximum size is 1MB.";
    }
    if(empty($file_error)){
      $file_name_new = uniqid('', true) . '.' . $file_ext;
      $file_destination = 'img/usr/' . $file_name_new;
      if(rename($file_tmp, $file_destination)){
        // echo '<br>' . $file_destination;
      } else{$file_error .= '<br>Something went wrong while uploading file';}
    }
    echo $file_error;
  }
}
?>
  <form method="post" action="" enctype="multipart/form-data">
    <fieldset>
      <legend>Form</legend>
      <!-- Other input fields -->
      <div id="form_element">Upload image:</div>
      <input type="file" name="file"><span id="error"><small><?php echo $file_error;
  //echo $file . '<br>' .  $_FILES['file'] . '<br>' . $file_name . $file['name'];
  //echo '<br>' .  $file_tmp . '<br>' . $file['tmp_name'] . '<br>' . $file_size . '<br>' . $file['size'];
  ?></small></span>
      <div id="form_element">
        <input type="submit" value="Postita" id="submit">
      </div>
    </fieldset>
  </form>

有多个问题。当用户上传的文件不符合要求(大小,格式等)时,即使$ error!=”,它仍在上传当用户根本不填写文件输入字段时,如果声明(是的,我知道,我不知道正确的术语...),则代码不应输入文件上传,但是,“上传文件时出错”仍然显示。提交格式不允许的图像时,它仍会上传,但路径类似于/ url / folder / img。-没有文件扩展名。

布赖恩

试试这个 ...

<?php
IF (isset($_POST['submit'])) {

    $err = "";
    $mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/jpg', 'image/png', 'image/x-png'); 
    $imgexts = array('gif', 'jpeg', 'jpg', 'png'); 

    IF (!empty($_FILES['file']['name'])) {

        $img = $_FILES['file']['name'];
        $temp = $_FILES['file']['tmp_name'];
        $ext = strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1));// file ext.
        $info = @getimagesize($_FILES['file']['tmp_name']); 
        $imgw = $info[0]; // width 
        $imgh = $info[1]; // height 
        $mime = image_type_to_mime_type($info[2]);

        IF (!in_array($ext, $imgexts)) { 
            $err .="<li>File type (".$ext.") is not supported. (Only ".implode(", ",$imgexts).")</li>"; // Non-supported file type 
        }ELSE{
            // 
            IF (!in_array($mime, $mimetypes)) { 
                $err .="<li>Mime type (".$mime.") is not supported. (Only ".implode(", ",$mimetypes).")</li>"; // Non-supported mime type 
            }

        }

    }ELSE{ 
        $err ="<li>Select a file to upload (".implode(", ",$imgexts).")</li>";
    }


    IF (!empty($err)) {

        echo '<p>Errors:</p><ul>'.$err.'</ul>';

    }ELSE{

        // good to go

    }

}ELSE{

    // form not sumbitted 


}
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Zend文件上传不允许或不知道SVG扩展名

来自分类Dev

为什么用PHP上传文件时Linux创建的临时文件没有扩展名,而Windows则带有扩展名?

来自分类Dev

PHP文件上传仅允许指定的扩展名

来自分类Dev

防止Facebook上传带有chrome扩展名的图像

来自分类Dev

jQuery示例:在不允许的文件扩展名的情况下重置输入文件元素

来自分类Dev

django rest框架不接受blob图片文件(不允许文件扩展名“”)

来自分类Dev

允许php上传脚本上的所有文件扩展名

来自分类Dev

允许php上传脚本上的所有文件扩展名

来自分类Dev

当用户使用htaccess直接在网址中键入扩展名时,从文件中删除扩展名

来自分类Dev

Windows 10不允许我为文件扩展名设置默认应用

来自分类Dev

7zip不允许档案名称中的文件扩展名

来自分类Dev

我们如何下载图像,当其 URL 不包含文件扩展名并上传带有文件扩展名的图像

来自分类Dev

下载带有扩展名的文件

来自分类Dev

PHP文件上传正在创建以“ PHP”开头且扩展名为.tmp的文件名

来自分类Dev

PHP Regex前缀,带有图像文件扩展名

来自分类Dev

我想将带有扩展名的文件上传到 aws s3,但它不会上传带有扩展名的文件

来自分类Dev

如何打开扩展名为.chk或没有扩展名的二进制文件?

来自分类Dev

从Laravel中的上传文件获取图像扩展名

来自分类Dev

好奇 - 使用通用文件扩展名(例如 .tmp)保存用户上传的图像的利弊?

来自分类Dev

如何获取使用php上传的文件的文件扩展名?

来自分类Dev

加载带有require.js错误且扩展名为html的文件时

来自分类Dev

正则表达式,允许文件仅带有.txt或没有扩展名

来自分类Dev

使用Javascript验证上传时的文件扩展名

来自分类Dev

如何允许以不同的扩展名加载php文件?

来自分类Dev

带有扩展名的文件名验证

来自分类Dev

上传带有相关扩展名过滤器的文件

来自分类Dev

验证上传的文件扩展名

来自分类Dev

在chrome扩展名内上传文件

来自分类Dev

在chrome扩展名内上传文件

Related 相关文章

  1. 1

    Zend文件上传不允许或不知道SVG扩展名

  2. 2

    为什么用PHP上传文件时Linux创建的临时文件没有扩展名,而Windows则带有扩展名?

  3. 3

    PHP文件上传仅允许指定的扩展名

  4. 4

    防止Facebook上传带有chrome扩展名的图像

  5. 5

    jQuery示例:在不允许的文件扩展名的情况下重置输入文件元素

  6. 6

    django rest框架不接受blob图片文件(不允许文件扩展名“”)

  7. 7

    允许php上传脚本上的所有文件扩展名

  8. 8

    允许php上传脚本上的所有文件扩展名

  9. 9

    当用户使用htaccess直接在网址中键入扩展名时,从文件中删除扩展名

  10. 10

    Windows 10不允许我为文件扩展名设置默认应用

  11. 11

    7zip不允许档案名称中的文件扩展名

  12. 12

    我们如何下载图像,当其 URL 不包含文件扩展名并上传带有文件扩展名的图像

  13. 13

    下载带有扩展名的文件

  14. 14

    PHP文件上传正在创建以“ PHP”开头且扩展名为.tmp的文件名

  15. 15

    PHP Regex前缀,带有图像文件扩展名

  16. 16

    我想将带有扩展名的文件上传到 aws s3,但它不会上传带有扩展名的文件

  17. 17

    如何打开扩展名为.chk或没有扩展名的二进制文件?

  18. 18

    从Laravel中的上传文件获取图像扩展名

  19. 19

    好奇 - 使用通用文件扩展名(例如 .tmp)保存用户上传的图像的利弊?

  20. 20

    如何获取使用php上传的文件的文件扩展名?

  21. 21

    加载带有require.js错误且扩展名为html的文件时

  22. 22

    正则表达式,允许文件仅带有.txt或没有扩展名

  23. 23

    使用Javascript验证上传时的文件扩展名

  24. 24

    如何允许以不同的扩展名加载php文件?

  25. 25

    带有扩展名的文件名验证

  26. 26

    上传带有相关扩展名过滤器的文件

  27. 27

    验证上传的文件扩展名

  28. 28

    在chrome扩展名内上传文件

  29. 29

    在chrome扩展名内上传文件

热门标签

归档