【问题标题】:What is the proper way of utilizing inline FTP links to files?使用内联 FTP 链接到文件的正确方法是什么?
【发布时间】:2016-02-12 16:51:24
【问题描述】:

我收到一个字符串,我需要使用它来下载图像...

ftp://FTPUSER:FTPPASS@HOST.COM\Path\To\File.jpg

我想知道是否有更好的方法来使用此字符串,而不是使用 regex/parse_url 将其拆分并将信息输入到传统的 FTP ftp_connect、ftp_login、ftp_pasv 等...

也许像一个

 ftp_get_file(ftp://FTPUSER:FTPPASS@HOST.COM\Path\To\File.jpg)

或类似的东西。

有什么想法吗?

提前感谢您的帮助!

【问题讨论】:

  • 这是一个网址,那为什么不是parse_url
  • 更新帖子,谢谢。
  • 好吧,既然 parse_url 就是为此而设计的,为什么还要用自己的解析函数重新发明轮子呢?它已经点缀了所有 i 并跨越了所有 t,您将从头开始并花费更多时间进行调试/测试,而不是实际完成任何有用的事情。
  • 我觉得你有点偏题了。我确实同意你的观点,但我的问题与 如何 我将其拆分无关,我要求的是 have 拆分它的替代方法。跨度>
  • 还有什么其他选择?您需要为这些不同的函数拆分各个部分,因为 php 本身不会接受这个 url 作为任何这些函数的参数。所以无论如何,你会做一些分裂。

标签: php laravel url ftp


【解决方案1】:

感谢@user3158900,工作解决方案是......

function downloadFileViaFTPURL($remote_data)
{
    // I dunno why, but this made it work...
    $search_replace = ["\\" => "/"];

    foreach ($search_replace as $search => $replace) {
        $remote_data = str_replace($search, $replace, $remote_data);
    }

    if ($remote_data = fopen($remote_data, "r")) {
        $filename = explode("/", $remote_data);
        $filename = end($filename);

        if (!file_exists("/path/to/folderforfile")) {
            mkdir("/path/to/folderforfile", 0755, true);
        }

        if (file_put_contents("/path/to/folderforfile/$filename", $remote_data)) {

            return true;

        }
    }
    return false;
}

downloadFileViaFTPURL("ftp://FTPUSER:FTPPASS@HOST.COM\Path\To\File.jpg");

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 2015-08-08
    • 1970-01-01
    相关资源
    最近更新 更多