PHP上传仅适用于某些文件(可能与大小有关)

时间:2013-09-23 11:03:20

标签: php

我正在开发(本地,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按照应有的方式处理(我在uploads文件夹中找到一个重命名的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文件

为了调整我的图像大小,我使用了this class,我之前使用过它,就像魅力一样。

我没有得到的是为什么某些文件以他们应该的方式处理,而其他文件未通过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');
        }
    }
?>

0 个答案:

没有答案