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);


    即可解决

  • 相关阅读:
    【搞定GTD】如何开始实践GTD?
    【iOS开发笔记21/50】获取应用程序的名称和版本号
    读书笔记:《冠军记忆术》
    【桥牌笔记】绝对不能让东家上手
    OpenInventor开发笔记:解决FaceSet的填充问题
    JasonHelper.Escape 转换字符串为jason格式代码
    在合适的场合使用 with (nolock) 提升查询性能
    嫁给程序员吧!【转】
    美国的工薪族阶层只承担全国"个税”总量的5%
    探秘System.Threading系列 第三篇:Thread的数据ThreadStatic 和LocalDataStoreSlot
  • 原文地址:https://www.cnblogs.com/wangchunming/p/2592922.html
Copyright © 2011-2022 走看看