帮助我理解使用Uploadify上传文件背后的逻辑

时间:2010-09-07 07:23:07

标签: php jquery

我正在使用Uploadify上传图片。我面临的唯一故障是我想将图像尺寸限制为用户上传图像。 (我不想出于某种原因使用图像调整大小)。我在php中执行此操作的逻辑是我有一个用户定义的函数,它将首先采用三个参数图像tempname,第二个是要限制的图像宽度,第三个是限制用户的图像高度。

我的功能是这样的。

function valid_image($image, $width, $height = 0) {
             /** Get the Dimensions of the Uploaded Image **/
            list($image_width, $image_height) = getimagesize($image['tmp_name']);
            /** If the height parameter in function is skipped then perform this **/
        if( $height == '0') {
        if( $image_width !== $width) {
            return false;
            }
            }
            /** If all the parameters in the function has got the value then perform this **/
    else if($image_width !== $width || $image_height !== $height) {
            return false;
            }
            return true;
            }

我想对uploadify应用相同的规则。

这是我的上传的Jquery脚本。

//Uploadify File1
  $(document).ready(function() {
    $('#nstitle').uploadify({ 
      'uploader': 'images/uploadify.swf',
      'script': 'uploadify.php',
      'folder': 'upload',
      'auto' : 'true',
      'cancelImg': 'images/cancel.png',
      'fileDesc': 'jpg/jpeg',
      'displayData': 'percentage',
      'fileExt': "*.jpg;*.jpeg",
      'sizeLimit' : '8388608',
      'fileDataName' : 'nstitle',
      onComplete: function(event, queueID, fileObj, response, data) 
      {
     $('#t_fileUploadName').append('<p>'+response+'<p/>');
     $("#t_fileUploadField").append("<input type='hidden' name='nstitle' value='" + response + "' />"); 
     $("#t_fileUploadBtn").remove();
      }
      }); }); 

现在我想要uploadify生成错误,如果它不满足uploadify.php中的条件我做了类似的事情。

if (!empty($_FILES['nstitle'])) {
    $tempFile = $_FILES['nstitle']['tmp_name'];
    if(!valid_image($_FILES['nstitle'],685 , 50)) {
    echo "Incorrect File Dimension";
    die();
    }
    else {
    $targetPath = 'uploads/news/title/';
    move_uploaded_file($tempFile,$targetPath.$ns_title);
    echo "$targetPath$ns_title";
    }
}

请注意,我已将所有相关文件包含在require_once()的相应页面中;如果我删除该valid_image()并运行没有它的脚本它只是工作得很好,但如果我尝试设置一个条件来触发错误它不起作用因为我尝试上传具有精确尺寸的文件。并且它仍然拒绝进入其他条件。

我在这里空白,这是错误的做法。如果是,那么我如何将用户限制为固定图像尺寸。任何类型的帮助都非常感谢让我知道你使用Uplodify与触发错误有关的经验和经验。

提前感谢..

2 个答案:

答案 0 :(得分:2)

更改

if(!valid_image($_FILES['nstitle'],685 , 50)) {

if(!valid_image($tempFile,685 , 50)) {

好像你已经工作太久了以至于你没有发现这个小小的错误:) 似乎我是那个工作太久的人..


修改

valid_image功能的顶部,添加:

var_dump($image, getimagesize($image['tmp_name']));

输出是什么?

答案 1 :(得分:0)

你可以在valid_image函数中更改!== to!=然后尝试