2011-11-30 212 views
0

我正在使用Uploadifyclass.upload.php上传和操作图像。 这里是我的代码。PHP图像调整大小

require_once('/style/scripts/crop/class.upload.php'); 
    if (!empty($_FILES)) { 
     $uc = $this->input->post('username'); 
     $_REQUEST['folder'] = "/project/user/".$uc."/pages".$_REQUEST['folder']."/images/gallery"; 
     $targetPath = $_SERVER['DOCUMENT_ROOT'] .$_REQUEST['folder']. '/'; 
     $pic_temp = random_string('alnum',10); 
     $handle = new Upload($_FILES['Filedata']); 
      if ($handle->uploaded) { 
       $handle->file_src_name_body  = $pic_temp; // hard name 
       $handle->file_overwrite   = true; 
       $handle->file_auto_rename  = false; 
       $handle->image_resize   = false; 
       $handle->image_ratio_y   = false; 
       $handle->image_x     = ($handle->image_src_x < 400)?$handle->image_src_x:400; 
       $handle->file_max_size   = '999999'; // max size 
       $handle->Process($targetPath); 
       $handle->clean(); 
       if ($handle->processed) 
        $json = array("result"  => 1, 
            "file"  => $_REQUEST['folder'].'/'.$handle->file_dst_name.'?'.time(), 
            "imagewidth" => $handle->image_dst_x, 
            "imageheight" => $handle->image_dst_y 
           ); 
       else 
        $json = array("result" => 0); 

       $encoded = json_encode($json); 
       echo $encoded; 
       unset($encoded);  
      } 
      else { 
       $json = array("result" => 0); 
       $encoded = json_encode($json); 
       echo $encoded; 
       unset($encoded); 
      } 

现在我想上传前检查文件的大小,如果 在大小超过1MB一个图像,然后应该重新调整大小[不裁剪或其他东西...]以节省磁盘空间。 如果小于1MB则应直接上传。

我该如何做到这一点?

该项目正在使用Codeigniter框架。

回答

0

当一个文件被上传后,您可以访问它:

$_FILES['some_name']['tmp_name'] 

所以要检查它的大小,你可以这样做:

$size = filesize($_FILES['some_name']['tmp_name']); 

参见filesize文档的详细信息。

+0

使用class.upload.php完成,但只能在上传之后完成。 – Red

0
$(document).ready(function() { 
    $('#id_image').bind('change', function() { 
     if(this.files[0].size > 1000141){ 
      $('#formerror').html('File is too big'); 
      $('#myformbutton').hide(); 
     }else{ 
      $('#formerror').html(' '); 
      $('#myformbutton').show('slow'); 
     } 
    }); 
}); 

    <div id="formerror"></div> 
    <form action="myaction" method="post" id="myform" enctype="multipart/form-data"> 
     <label for="id_title">Title</label> 
     <input id="id_title" type="text" name="title" maxlength="255" /> 
     <label for="id_image">Image</label> 
     <input type="file" name="image" id="id_image" /> 
     <input type="button" id="myformbutton" value="Add!" /> 
    </form> 
+0

我正在使用'uploadify'及其基于Flash的上传器,我不知道如何访问像我们的答案这样的值,也是一个客户端验证。 – Red

0

Uploadify有一个参数来限制文件大小:sizeLimit。如果设置了,它将阻止提交文件。

http://www.uploadify.com/documentation/options/sizelimit/

大部分(如果不是全部)的基于Flash的上传像SWF,solmetra等允许你检查在上传之前文件的大小。另外,您可以从技术上将文件自己调整到服务器上,但这会浪费您的带宽。