西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > 开发教程 > linux教程 >

在线文库系统centos

时间:2016-10-08 17:52来源:未知 作者:好模板编辑 点击:
总体架构: 前端web服务器+数据库服务器+文件转换服务器+文件存储服务器 总体描述: 前端web页面上传文件,后端程序将数据写入mysql,并将文件发送到文件服务器,文件服务器定时查询
总体架构:
前端web服务器+数据库服务器+文件转换服务器+文件存储服务器
总体描述:
前端web页面上传文件,后端程序将数据写入mysql,并将文件发送到文件服务器,文件服务器定时查询mysql取出需要转换文件列表,用php脚本调用linux命令执行转换文件操作,转换完成后将数据库对应记录更新,并将文件发送到文件存储服务器。
一.将文件发送到文件转换服务器
web端
php通过curl发送文件
文件转换服务器
搭建一个web服务,只需要2个东东:upload.php、uploads文件夹
upload.php代码如下:
<?php
define('MY_ROOT', str_replace('/upload.php', '', str_replace('\\', '/', __FILE__)));
if(isset($_FILES)){
    if(isset($_FILES['file'])){
        try {
            move_uploaded_file($_FILES['file']['tmp_name'], MY_ROOT.'/uploads/'.$_FILES['file']['name']);
            @unlink($GLOBALS[$_FILES['file']['tmp_name']]);
            echo json_encode(array('success'=>TRUE,'error'=>''));
        } catch (Exception $exc) {
            //echo $exc->getTraceAsString();
            echo json_encode(array('success'=>FALSE,'error'=>'移动文件失败'));
        }
    }
}
?>
二.文件转换php脚本核心代码如下
#!/usr/local/php.old/bin/php -q 
<?php
date_default_timezone_set('PRC');
error_reporting(E_ALL);
 
/* 取得当前所在的根目录 */
define('MY_ROOT', str_replace('/setup.php', '', str_replace('\\', '/', __FILE__)));
include_once(MY_ROOT."/include/lib_mysql.php");//mysql操作类
require_once(MY_ROOT.'/include/aliyun/aliyun.php');
include_once(MY_ROOT."/config.php");
use \Aliyun\OSS\OSSClient;
 
$client = OSSClient::factory(array(
    'AccessKeyId' => $AccessKeyId,
    'AccessKeySecret' => $AccessKeySecret,
));
 
$db = new lib_mysql($db_host, $db_user, $db_pass, $db_name);
while (true){
$sql = "select aid,softlinks from t_addonbook where wwk=0 ";
$list = $db->getAll($sql);
 
    //循环处理需要转换的文档
    foreach($list as $item){
        //获取源文档的上传路径
        $local_path = $item['softlinks'];//{dede:link islocal='1' text='本地下载'} /uploads/userup/1088/9-30.xls {/dede:link}
        $tmp_str = strpos($local_path, '}')+1;
        $local_path = substr($local_path, $tmp_str);//去除 {dede:link islocal='1' text='本地下载'}
        $tmp_str = strpos($local_path, '{/dede:link}');
        $local_path = substr($local_path, 0, $tmp_str);//去除 {/dede:link}
        $local_path = str_replace(" ", "", $local_path);
        $local_file_name = basename($local_path);//文件名+扩展名
        $file_name_arr = explode(".", $local_file_name);
        $file_name = $file_name_arr[0];
        $file_type = end($file_name_arr);
        $file_type = strtolower($file_type);
        $tmp_name_str = strpos($local_path, $local_file_name);
        $local_path = substr($local_path, 0,$tmp_name_str);//去除文件名
        if(file_exists($upload_path.$local_file_name)){
            if(copy($upload_path.$local_file_name, $convert_path.$local_file_name)){//将文件
                //将文件转换为pdf
                $start = time();
                if($file_type=='txt'){
                     if(!isUTF8($convert_path.$local_file_name)){//若不是UTF8编码,则转码
                         $temp = exec("enca -i ".$convert_path.$local_file_name);
                         if(strrpos($temp, '???') === false){//是gbk
                             exec("iconv -f gbk -t utf-8 ".$convert_path.$local_file_name." -o ".$convert_path.$local_file_name);//txt 转码 
                         }else{
                             exec("iconv -f unicode -t utf-8 ".$convert_path.$local_file_name." -o ".$convert_path.$local_file_name);//txt 转码 
                         }
                     }
                }
 
                if($file_type!='pdf'){
                    exec($openoffice_path." -f pdf ".$convert_path.$local_file_name);//转换为pdf
                }
                //生成缩略图
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容