2009-12-21 169 views
1

因此,我使用Uplodify插件允许用户一次上传多个图像。问题是我需要为图像设置最小宽度和高度。比方说,150x150px是用户可以上传的最小图片。Uploadify最小图像宽度和高度

如何在Uploadify插件中设置此限制?当用户尝试上传较小的图片时,我也想显示一些错误消息。

这里是被称为BU插件上传图片的PHP文件:

<?php 

define('BASE_PATH', substr(dirname(dirname(__FILE__)), 0, -22)); 

// set the include path 
set_include_path(BASE_PATH 
       . '/../library' 
       . PATH_SEPARATOR 
       . BASE_PATH 
       . '/library' 
       . PATH_SEPARATOR 
       . get_include_path()); 

// autoload classes from the library 
function __autoload($class) { 
    include str_replace('_', '/', $class) . '.php'; 
} 

$configuration = new Zend_Config_Ini(BASE_PATH 
            . '/application' 
            . '/configs/application.ini', 
            'development'); 
$dbAdapter = Zend_Db::factory($configuration->database); 
Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter); 

function _getTable($table) 
{ 
    include BASE_PATH 
    . '/application/modules/default/models/' 
    . $table 
    . '.php'; 
    return new $table(); 
} 

$albums = _getTable('Albums'); 
$media = _getTable('Media'); 

if (false === empty($_FILES)) { 

    $tempFile = $_FILES['Filedata']['tmp_name']; 
    $extension = end(explode('.', $_FILES['Filedata']['name'])); 

    // insert temporary row into the database 
    $data = array(); 
    $data['type'] = 'photo'; 
    $data['type2'] = 'public'; 
    $data['status'] = 'temporary'; 
    $data['user_id'] = $_REQUEST['user_id']; 
    $paths = $media->add($data, $extension, $dbAdapter); 

    // save the photo 
    move_uploaded_file($tempFile, 
         BASE_PATH . '/public/' . $paths[0]); 

    // create a thumbnail 
    include BASE_PATH . '/library/My/PHPThumbnailer/ThumbLib.inc.php'; 
    $thumb = PhpThumbFactory::create(BASE_PATH . '/public/' . $paths[0]); 
    $thumb->adaptiveResize(85, 85); 
    $thumb->save(BASE_PATH . '/public/' . $paths[1]); 

    // add watermark to the bottom right corner 
    $pathToFullImage = BASE_PATH . '/public/' . $paths[0]; 
    $size = getimagesize($pathToFullImage); 
    switch ($extension) { 
     case 'gif': 
      $im = imagecreatefromgif($pathToFullImage); 
      break; 
     case 'jpg': 
      $im = imagecreatefromjpeg($pathToFullImage); 
      break; 
     case 'png': 
      $im = imagecreatefrompng($pathToFullImage); 
      break; 
    } 
    if (false !== $im) { 
     $white = imagecolorallocate($im, 255, 255, 255); 
     $font = BASE_PATH . '/public/fonts/arial.ttf'; 
     imagefttext($im, 
        13, // font size 
        0, // angle 
        $size[0] - 132, // x axis (top left is [0, 0]) 
        $size[1] - 13, // y axis 
        $white, 
        $font, 
        'HunnyHive.com'); 
     switch ($extension) { 
      case 'gif': 
       imagegif($im, $pathToFullImage); 
       break; 
      case 'jpg': 
       imagejpeg($im, $pathToFullImage, 100); 
       break; 
      case 'png': 
       imagepng($im, $pathToFullImage, 0); 
       break; 
     } 
     imagedestroy($im); 
    } 

    echo "1"; 

} 

而这里的JavaScript的:

$(document).ready(function() {  
    $('#photo').uploadify({ 
     'uploader'  : '/flash-uploader/scripts/uploadify.swf', 
     'script'   : '/flash-uploader/scripts/upload-public-photo.php', 
     'cancelImg'  : '/flash-uploader/cancel.png', 
     'scriptData'  : {'user_id' : 'USER_ID'}, 
     'queueID'  : 'fileQueue', 
     'auto'   : true, 
     'multi'   : true, 
     'sizeLimit'  : 2097152, 
     'fileExt'  : '*.jpg;*.jpeg;*.gif;*.png', 
     'wmode'   : 'transparent', 
     'onComplete'  : function() { 
      $.get('/my-account/temporary-public-photos', function(data) { 
       $('#temporaryPhotos').html(data); 
      }); 
     } 
    }); 
    $('#upload_public_photo').hover(function() { 
     var titles = '{'; 
     $('.title').each(function() { 
      var title = $(this).val(); 
      if ('Title...' != title) { 
       var id = $(this).attr('name'); 
       id = id.substr(5); 
       title = jQuery.trim(title); 
       if (titles.length > 1) { 
        titles += ','; 
       } 
       titles += '"' + id + '"' + ':"' + title + '"'; 
      } 
     }); 
     titles += '}'; 
     $('#titles').val(titles); 
    }); 
}); 

现在记住,我知道如何检查图像尺寸在PHP文件中。但我不知道如何修改JavaScript,因此它不会上传尺寸非常小的图像。

+0

我我敢打赌,javascript无法读取图像尺寸。当你在javascript沙盒中时,从磁盘上的文件中读取数据是严格苛刻的。如果你想在客户端读取这些东西,Flash或Java Applet可能是必需的。 – 2009-12-21 21:55:54

+0

否。图像上传到服务器上的临时文件夹,如果一切正常,则将它们保存到正常服务器位置以获取图像。我会对临时图像进行所有测试和检查。我只需要知道如何访问onComplete中的PHP响应......并且我无法从相当稀少的文档中找到它。 – 2009-12-21 22:09:24

回答

4

你上这条线的图像的大小:

$size = getimagesize($pathToFullImage); 

为什么不加一个条件在这里检查,如果它至少是你想要的大小,如果不返回错误。

if($size[0] > 150 || $size[1] > 150) { 
    return $someError; 
} 

而且它看起来像有是Uploadify一个onError的选项,你可以设置:http://www.uploadify.com/documentation/

编辑:这个线程看起来可能是对你有所帮助:http://www.uploadify.com/forum/viewtopic.php?f=5&t=14

+0

实际上,只有在上传之前出现错误,onError才会触发,因此只有在调用PHP脚本之前才会触发。我需要处理onComplete中的错误,我只是不知道如何访问PHP脚本中的响应... – 2009-12-21 22:06:37