Example #1
0
/**
 * 上传生成的缩略图到 OSS (并根据设定清理本地文件)
 *
 * @param $metadata
 * @return mixed
 */
function upload_thumb_2_oss($metadata)
{
    if (preg_match('/\\d{4}\\/\\d{2}/', $metadata['file'], $m)) {
        $wp_uploads = wp_upload_dir($m[0]);
    } else {
        return $metadata;
    }
    $oss_options = get_option('oss_options', TRUE);
    $config = array('id' => esc_attr($oss_options['ak']), 'key' => esc_attr($oss_options['sk']), 'bucket' => esc_attr($oss_options['bucket']), 'end_point' => esc_attr($oss_options['end_point']));
    $oss_upload_path = trim($oss_options['path'], '/');
    $oss_nolocalsaving = esc_attr($oss_options['nolocalsaving']) == 'true' ? true : false;
    if (!is_object($aliyun_oss) && $oss_options['img_url'] == "") {
        $aliyun_oss = Alibaba::Storage($config);
    }
    $opt['Expires'] = 'access plus 1 years';
    if (isset($metadata['sizes']) && count($metadata['sizes']) > 0) {
        foreach ($metadata['sizes'] as $val) {
            $object = ltrim($oss_upload_path . '/' . trim($wp_uploads['subdir'], '/') . '/' . ltrim($val['file'], '/'), '/');
            $file = $wp_uploads['path'] . '/' . $val['file'];
            if ($oss_options['img_url'] == "") {
                $aliyun_oss->saveFile($object, $file, $opt);
            }
            if ($oss_nolocalsaving) {
                _delete_local_file($file);
            }
        }
    }
    if ($oss_nolocalsaving) {
        $file = $wp_uploads['basedir'] . '/' . $metadata['file'];
        _delete_local_file($file);
    }
    return $metadata;
}
Example #2
0
/**
 * 上传图片的缩略图
 * @param $metadata
 * @return array
 */
function upload_thumbs($metadata)
{
    //上传所有缩略图
    if (isset($metadata['sizes']) && count($metadata['sizes']) > 0) {
        //获取OSS插件的配置信息
        $oss_options = get_option('oss_options', TRUE);
        //是否需要上传缩略图
        $nothumb = attribute_escape($oss_options['nothumb']) == 'true';
        //是否需要删除本地文件
        $is_delete_local_file = attribute_escape($oss_options['nolocalsaving']) == 'true';
        //如果禁止上传缩略图,就不用继续执行了
        if ($nothumb) {
            return $metadata;
        }
        //获取上传路径
        $wp_uploads = wp_upload_dir();
        //得到本地文件夹和远端文件夹
        $file_path = $wp_uploads['path'] . '/';
        if (get_option('upload_path') == '.') {
            $file_path = str_replace("./", '', $file_path);
        }
        $object_path = str_replace(get_home_path(), '', $file_path);
        //there may be duplicated filenames,so ....
        foreach ($metadata['sizes'] as $val) {
            //生成object在OSS中的存储路径
            $object = $object_path . $val['file'];
            //生成本地存储路径
            $file = $file_path . $val['file'];
            //设置可选参数
            $opt = array('Content-Type' => $val['mime-type']);
            //执行上传操作
            _file_upload($object, $file, $opt);
            //_logged('2thumb.txt',"object=$object;file=$file");
            //如果不在本地保存,则删除
            if ($is_delete_local_file) {
                _delete_local_file($file);
            }
        }
    }
    return $metadata;
}
/**
 * 上传图片的缩略图
 */
function upload_thumbs($metadata)
{
    //上传所有缩略图
    if (isset($metadata['sizes']) && count($metadata['sizes']) > 0) {
        //获取COS插件的配置信息
        $cos_options = get_option('cos_options', TRUE);
        //是否需要上传缩略图
        $nothumb = esc_attr($cos_options['nothumb']) == 'true';
        //是否需要删除本地文件
        $is_delete_local_file = esc_attr($cos_options['nolocalsaving']) == 'true';
        //如果禁止上传缩略图,就不用继续执行了
        if ($nothumb) {
            return $metadata;
        }
        //获取上传路径
        $wp_uploads = wp_upload_dir();
        $basedir = $wp_uploads['basedir'];
        $file_dir = $metadata['file'];
        //得到本地文件夹和远端文件夹
        $file_path = $basedir . '/' . dirname($file_dir) . '/';
        if (get_option('upload_path') == '.') {
            $file_path = str_replace("\\", '/', $file_path);
            $file_path = str_replace(get_home_path() . "./", '', $file_path);
        } else {
            $file_path = str_replace("\\", '/', $file_path);
        }
        $object_path = str_replace(get_home_path(), '', $file_path);
        //there may be duplicated filenames,so ....
        foreach ($metadata['sizes'] as $val) {
            //生成object在COS中的存储路径
            $object = '/' . $object_path . $val['file'];
            //生成本地存储路径
            $file = $file_path . $val['file'];
            //设置可选参数
            $opt = array('Content-Type' => $val['mime-type']);
            //执行上传操作
            _file_upload($object, $file, $opt);
            //如果不在本地保存,则删除
            if ($is_delete_local_file) {
                _delete_local_file($file);
            }
        }
    }
    return $metadata;
}