zoukankan      html  css  js  c++  java
  • 织梦、phpcms程序添加ftp://、thunder://、flashget:文件下载时,出错的修复方法

    我最近用PHP开源程序做了一个网站,发现添加ftp文件下载时会出错,于是看了一下plus/download.php 逐段排除,最后发现是倒数第二行代码出错。

    header("location:{$softUrl}");
    exit();

    我没有系统学过PHP,所以不是很了解,搜索了一下,知道了header函数的在这里的作用,就是有来转向的,又搜索了一下关于php header ftp 出错网页,找到了一个类似的问题http://topic.csdn.net/t/20060415/12/4688825.html

    于是参考了他的做法,使用

    echo " <META   HTTP-EQUIV=REFRESH   CONTENT= '0;URL={$softUrl} '>";

    作为下载,但这时http://文件的又出错,但ftp的可正常下载了,于是我结合两者,做了一个判断

    if(preg_match("#^thunder:\/\/|^ftp:\/\/|^flashget:\/\/#i", $softUrl))
    {
    echo " <META   HTTP-EQUIV=REFRESH   CONTENT= '0;URL={$softUrl} '>";
    exit();
    }
    header("location:{$softUrl}");
    exit();

    这样经测试都可以下载了,如果有更好的方法的,欢迎大家交流一下,谢谢,本人是PHP的菜鸟中的菜鸟,有什么地方不对,欢迎指出。

    phpcms v9也有似的问题,解决方法一样:

    找到文件modules/content/down.php

    找到代码:

            //远程文件
            if(strpos($fileurl, ':/') && (strpos($fileurl, pc_base::load_config('system','upload_url')) === false)) { 
            header("Location: $fileurl");
            } else {
                if($d == 0) {
                    header("Location: ".$fileurl);
                } else {
                    $fileurl = str_replace(array(pc_base::load_config('system','upload_url'),'/'), array(pc_base::load_config('system','upload_path'),DIRECTORY_SEPARATOR), $fileurl);
                    $filename = basename($fileurl);


    修改为:

            //远程文件
            if(strpos($fileurl, ':/') && (strpos($fileurl, pc_base::load_config('system','upload_url')) === false)) { 
                if(preg_match("#^thunder:\/\/|^ed2k:\/\/|^ftp:\/\/|^flashget:\/\/#i", $fileurl))
                {
                echo " <META   HTTP-EQUIV=REFRESH   CONTENT= '0;URL=$fileurl '>";
                exit();
                }
                header("location:$fileurl");
                exit();
              } else {
                if($d == 0) {
                    header("Location: ".$fileurl);
                } else {
                    $fileurl = str_replace(array(pc_base::load_config('system','upload_url'),'/'), array(pc_base::load_config('system','upload_path'),DIRECTORY_SEPARATOR), $fileurl);
                    $filename = basename($fileurl);


    即可解决

  • 相关阅读:
    Linux文件/proc/net/tcp分析
    为什么系统调用会消耗较多资源
    为什么Linux默认页大小是4KB
    为什么Linux需要虚拟内存
    Make 命令教程
    关于同步的一点思考-下
    关于同步的一点思考-上
    Linux下的进程控制块(PCB)
    汇编语言基础:寄存器和系统调用
    内核栈与thread_info结构详解
  • 原文地址:https://www.cnblogs.com/wangchunming/p/2592922.html
Copyright © 2011-2022 走看看