0

我正在开发(本地,mac)图像(我知道,pdf文件不是图像)上传表单。我的测试用例有以下文件:

  • test.jpg, 500x500px, 8kb, 绿色方块
  • tester.jpg, 6000x6000px, 426kb, 绿色方块
  • Screen Shot 2013-09-23 at 12.12.29 .png, 3360x2100px, 2.3MB, 截图
  • P1020521.JPG, 4000x3000px, 2.7MB, 来自小型相机的图片
  • optimal web design.pdf, 612×792, 46 页, 733kb, pdf 文件

表单的目的是上传图像,检查尺寸并(如有必要)将图像调整为最大宽度 1200 或最大高度 800 像素,重命名图像并保存文件。

当我尝试上传上述文件时,我得到以下结果:

  • test.jpg以应有的方式处理(我在上传文件夹中找到了一个重命名的 1200x1200 文件)
  • tester.jpg,不显示任何输出和调整大小,但我在上传文件夹中找到了一个重命名的 6000x6000 文件
  • Screen Shot 2013-09-23 at 12.12.29 .pngis_uploaded_file()检查失败
  • P1020521.JPGis_uploaded_file()检查失败
  • optimal web design.pdf以应有的方式处理(当然没有调整大小,php调整大小错误),我在我的上传文件夹中找到了一个重命名的pdf文件

为了调整我的图像大小,我使用了这个类,我以前用过这个类,它就像一个魅力。

我不明白为什么某些文件按应有的方式处理,而其他文件则未通过is_uploaded_file()检查。我在这里缺少一些基本设置吗?

我已经搜索了这个站点并找到了一个可能的解决方案,if(is_uploaded_file(realpath($_FILES['file']['tmp_name']))){但是那个没有解决。

它只是几行简单的代码,我不明白为什么它适用于某些文件,但在其他文件上却失败了。

这是我的表格:


<script>
$(document).ready(function(){
    $('input:file').change(function(){
        $('form').submit();
    });
});
</script>

[..]

<form id="inline-upload-form" method="POST" action="process.image-upload.php" enctype="multipart/form-data">
<fieldset>
    <legend id="main-form-legend">Instellingen
    <div>
        <input type="file" name="file" id="file" class="defaultInput">
    </div>
</fieldset>
</form>

process.image-upload.php:


<?php

    if($_SERVER['REQUEST_METHOD'] == "POST"){
        $dir = '/path/to/uploads/';
        $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
        $filename = $_SESSION['user_id'].date("dmYHis").'.'.$extension;
        $uploadfile = $dir.$filename;
        if(is_uploaded_file(realpath($_FILES['file']['tmp_name']))){
            if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)){
                $resizeObj = new resize($uploadfile);
                $resizeObj -> resizeImage(1200, 800, 'auto');
                $resizeObj -> saveImage($uploadfile, 100);
                echo($uploadfile.' uploaded');
            }else{
                echo('not moved');
            }
        }else{
            echo('not uploaded');
        }
    }
?>
4

0 回答 0