当前位置: 代码迷 >> PHP >> Thinkphp3.2 Linux下缩略图生成失败,该怎么处理
  详细解决方案

Thinkphp3.2 Linux下缩略图生成失败,该怎么处理

热度:571   发布时间:2016-04-28 18:46:10.0
Thinkphp3.2 Linux下缩略图生成失败
代码在本地运行正常,部署到Linux就不好使了。
前端代码:

<script type="text/javascript">
$(function() {
$("#file_upload").uploadify({
        height        : 30,
        swf           : '{$Think.const.SITE_URL}public/GoodsUploadify/uploadify.swf',
        uploader      : '{:U("Goods/GoodsUploadify")}',
        width         : 120,
       //允许上传的文件后缀
        'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',
        'multi'       : false, //是否支持多文件上传 
        'simUploadLimit' : 1, //一次同步上传的文件数目
        'sizeLimit'      : 31457280, //设置单个文件大小限制
        'queueSizeLimit' : 1, //队列中同时存在的文件个数限制
        //'buttonImage':'/public/uploadify_shop/upbutton.jpg',//浏览按钮的背景图片路径
        'formData': { 'sessionid': '<?php echo session_id();?>'}, 
        'onUploadSuccess' : function(file, data, response) {
         var data = $.parseJSON(data);
            $('#images').attr('src','{$Think.const.SITE_URL}public/GoodsImages/'+data['url']);
            $('#original_img').val(data['url']);
        },
    });
});
</script>


php端代码:

public function GoodsUploadify() {
if (! empty ( $_FILES )) {
if (isset ( $_POST ['sessionid'] )) {
session_id ( $_POST ['sessionid'] );
session_start (); // 注意此函数要在session_id之后
}
import ( 'Org.Net.UploadFile' );
$upload = new \UploadFile ();
$upload->maxSize = 3292200;
$upload->allowExts = explode ( ',', 'jpg,gif,png,jpeg' );
$upload->savePath = "./public/GoodsImages/";
// 设置需要生成缩略图,仅对图像文件有效
$upload->thumb = true;
// 设置需要生成缩略图的文件后缀
$upload->thumbPrefix = 'z_,s_'; // 生产2张缩略图
                                // 设置引用图片类库包路径
$upload->thumbMaxWidth = '520,225';
// 设置缩略图最大高度
$upload->thumbMaxHeight = '520,225';
// 设置上传文件规则
$upload->saveRule = 'uniqid';
// 删除原图
// $upload->thumbRemoveOrigin = true;
$this->ajaxReturn ( 1, 'json' );
if (! $upload->upload ()) { // 上传错误提示错误信息
$this->ajaxReturn ( 2, 'json' );
$this->ajaxReturn ($upload->getErrorMsg (), 0, 'json' );
} else { // 上传成功 获取上传文件信息
$this->ajaxReturn ( 3, 'json' );
$info = $upload->getUploadFileInfo ();
$temp_size = getimagesize ( "./public/GoodsImages/" . $info ['0'] ['savename'] );
if ($temp_size [0] < 100 || $temp_size [1] < 100) { // 判断宽和高是否符合要求
$this->ajaxReturn ( 0, '图片宽或高不得小于100px!', 0, 'json' );
}
$data ['picName'] = $info ['0'] ['savename'];
$data ['status'] = 1;
$data ['url'] = $data ['picName'];
$data ['info'] = $info;
$this->ajaxReturn ( $data, 'json' );
}

}
}


其中$this->ajaxReturn ( (1/2/3), 'json' );为调试代码
可以返回1,当1注销时2和3都不返回,1,2,3都注销时,什么都不返回,
缩略图和原图都是一个路径,原图上成功说明缩略图路径没错。所以我就搞不懂了。
现在问题就是,缩略图生成失败,没有返回值,求大神帮忙,本来想把上传插件源码传上来参考的,没有上传附件功能啊,放这个框里 又太长 = =
------解决方案--------------------
if (isset ( $_POST ['sessionid'] )) {
                session_id ( $_POST ['sessionid'] );
                session_start (); // 注意此函数要在session_id之后
            }
THINKPHP 自动启用 session_start ,你自己设置的,重复了。

import ( 'Org.Net.UploadFile' );
            $upload = new \UploadFile ();