欢迎登录

OneIndex上传本地文件解决方案

:2019-07-17    :480 次   :3167 字   

介绍:

oneindex是利用onedrive网盘来分享出来的网站,详细请咨询Github,在这里就不多讲搭建教程了,可以参考此教程【教程】,本教程主要讲如何将本地文件通过oneindex网站上传到onedrive,通过最简单的,也是最笨的方法来实现,在oneindex的readme我们可以看到这样的代码,这将是我们实现的关键。

注意不能开启去掉伪静态,否则文件打不开

清除缓存:  

php one.php cache:clear

刷新缓存:  

php one.php cache:refresh

刷新令牌:  

php one.php token:refresh

上传文件:  

php one.php upload:file 本地文件 [OneDrive文件]

上传文件夹:

php one.php upload:folder 本地文件夹 [OneDrive文件夹]

例如:

//上传demo.zip 到OneDrive 根目录  
php one.php upload:file demo.zip  

//上传demo.zip 到OneDrive /test/目录  
php one.php upload:file demo.zip /test/  

//上传demo.zip 到OneDrive /test/目录并将其命名为 d.zip  
php one.php upload:file demo.zip /test/d.zip  

//上传up/ 到OneDrive /test/ 目录  
php one.php upload:file up/ /test/

思路:

我们可以看到这里,我们可以从命令行将服务器的文件上传到OneDrive,所以我们的任务就是通过本地上传文件到服务器,然后服务器上传文件到OneDrive,删除服务器文件。介绍完流程,开始敲代码。在这里给出了代码,不考虑安全性,只完成结果。

代码:

1、本地上传文件到服务器。

在此教程很详细和代码说明了,也给出了Demo:解决js+php服务器上传图片或文件

2、服务器上传文件到OneDrive。

$shell = 'php ../one.php upload:file ../'.substr($path,1,strlen($path)).' Share/upload/';//参考上面的填写自己的文件地址,$path为你的上传文件地址
exec($shell, $result, $status);
if( $status ){
        echo "shell命令{$shell}执行失败";
		//$ret = errjson("shell命令执行失败".$path);
} 
else {
        //echo "shell命令{$shell}成功执行, 结果如下";
        //print_r( $result );
	if($result[3]==null){
		//$ret = errjson("没有文件".$path);
		echo "没有文件".$path;
	}
}
echo json_encode($ret);

3、删掉上传后的文件

delfile(PATH_ROOT.$path);
deldir("../upload/");

/**
 * 静默删除文件。
 */
function delfile($file)
{
    try{unlink($file);}catch(Exception $ex){}
}
//清空文件夹函数和清空文件夹后删除空文件夹函数的处理
function deldir($path){
   //如果是目录则继续
   if(is_dir($path)){
    //扫描一个文件夹内的所有文件夹和文件并返回数组
   $p = scandir($path);
   foreach($p as $val){
    //排除目录中的.和..
    if($val !="." && $val !=".."){
     //如果是目录则递归子目录,继续操作
     if(is_dir($path.$val)){
      //子目录中操作删除文件夹和文件
      deldir($path.$val.'/');
      //目录清空后删除空文件夹
      @rmdir($path.$val.'/');
     }else{
      //如果是文件直接删除
      unlink($path.$val);
     }
    }
   }
  }
}
    暂无评论,快来抢沙发吧!
×