上代码,配合递归创建文件夹使用,也可根据自己需求进行修改

PHP递归创建文件夹

 


/**
 * 通过CURL下载文件
 *
 * @param string $strFileUrl        文件下载地址
 * @param string $strSaveFilePath   保存文件路径,例如 /a/a/a
 * @param string $strSaveFileName   保存文件名,必须带后缀,例如 xxx.zip
 * @return void
 * @author 一颗大萝北 [email protected]
 */
function downFile($strFileUrl, $strSaveFilePath, $strSaveFileName)
{
    if (!is_dir($strSaveFilePath)) dgMkdir($strSaveFilePath); //第一次检查,文件不存在就创建
    if (!is_dir($strSaveFilePath)) return [‘ok’ => false, ‘msg’ => ‘文件夹不符合规定,LINUX下如果存在同名文件且不为文件夹时会无法创建文件夹’]; //第二层检查,防止创建出错
    $objCurl = curl_init();
    curl_setopt($objCurl, CURLOPT_URL, $strFileUrl);
    $objFp = fopen($strSaveFilePath . $strSaveFileName, ‘w+’);
    curl_setopt($objCurl, CURLOPT_FILE, $objFp);
    curl_setopt($objCurl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($objCurl, CURLOPT_TIMEOUT, 50);
    curl_exec($objCurl);
    curl_close($objCurl);
    fclose($objFp);
    if (is_file($strSaveFilePath . ‘/’ . $strSaveFileName)) return [‘ok’ => true, [‘msg’ => ‘success’]];
    return [‘ok’ => false, [‘msg’ => ‘fail’]];
}

完整代码

 


downFile('url','/www/a/b/c/d','1.zip');


/**
 * 通过CURL下载文件
 *
 * @param string $strFileUrl        文件下载地址
 * @param string $strSaveFilePath   保存文件路径,例如 /a/a/a
 * @param string $strSaveFileName   保存文件名,必须带后缀,例如 xxx.zip
 * @return void
 * @author 一颗大萝北 [email protected]
 */
function downFile($strFileUrl, $strSaveFilePath, $strSaveFileName)
{
    if (!is_dir($strSaveFilePath)) dgMkdir($strSaveFilePath); //第一次检查,文件不存在就创建
    if (!is_dir($strSaveFilePath)) return [‘ok’ => false, ‘msg’ => ‘文件夹不符合规定,LINUX下如果存在同名文件且不为文件夹时会无法创建文件夹’]; //第二层检查,防止创建出错
    $objCurl = curl_init();
    curl_setopt($objCurl, CURLOPT_URL, $strFileUrl);
    $objFp = fopen($strSaveFilePath . $strSaveFileName, ‘w+’);
    curl_setopt($objCurl, CURLOPT_FILE, $objFp);
    curl_setopt($objCurl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($objCurl, CURLOPT_TIMEOUT, 50);
    curl_exec($objCurl);
    curl_close($objCurl);
    fclose($objFp);
    if (is_file($strSaveFilePath . ‘/’ . $strSaveFileName)) return [‘ok’ => true, [‘msg’ => ‘success’]];
    return [‘ok’ => false, [‘msg’ => ‘fail’]];
}
/**
 * 递归创建文件夹,不允许携带文件名
 *
 * @param [type] $strPath      文件夹路径
 * @param integer $intDepth    给递归用的,必须是0
 * @param string $strThisPath  给递归用的,必须是””
 * @return void
 * @author 一颗大萝北 [email protected]
 */
function dgMkdir($strPath, $intDepth = 0, $strThisPath = “”)
{
    $arrPath = explode(‘/’, $strPath);
    if (!empty($strThisPath)) {
        $strThisPath .= ‘/’ . $arrPath[$intDepth];
    } else {
        $strThisPath =  $arrPath[$intDepth];
    }
    if (is_dir($strThisPath)) {
        $intDepth++;
        if ($intDepth < count($arrPath)) {
            dgMkdir($strPath, $intDepth, $strThisPath);
        }
    } else {
        mkdir($strThisPath, 0777);
        $intDepth++;
        if ($intDepth < count($arrPath)) {
            dgMkdir($strPath, $intDepth, $strThisPath);
        }
    }
}
说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...