【问题标题】:How to get HTTP URL of file uploaded to FTP server如何获取上传到 FTP 服务器的文件的 HTTP URL
【发布时间】:2018-03-07 04:13:29
【问题描述】:

以下是我将文件上传到其他服务器的代码,

$ftp_server="host";
$ftp_user_name="";
$ftp_user_pass="";
$file = "referesh.php";//tobe uploaded
$name = "diff_adtaggeneration";
$remote_file = $name."/referesh.php";

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

$res = ftp_rawlist($conn_id, $name);
//print_r($_SERVER);exit;
if(count($res) > 0)
{

    ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
}
else
{
    ftp_mkdir($conn_id, $name);
    ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
}

ftp_close($conn_id); 

上面的代码完美运行,文件成功上传到其他服务器,新文件夹名称'diff_adtaggeneration'将在目录的根目录和上传到该文件夹​​的文件中创建,我需要获取上传的文件路径..!我使用 print_r($_SERVER) ,我知道这仅显示当前服务器详细信息,但如何获取上传服务器(其他服务器)的根目录完整文件路径。任何帮助表示赞赏...

【问题讨论】:

  • 您需要做类似'/var/www/html/'.dirname($remote_file) 之类的事情,因为您无法从 ftp 获取绝对路径。
  • 查看ftp_pwd,但它可能与 FTP 根目录有关。服务器可能会也可能不会公开远程目录的真实完整路径,在这种情况下,您只需要知道它。
  • 如果文件上传到该服务器,我需要在该服务器上运行该上传文件
  • 是否可以运行上传的文件?
  • 你说的“运行”是什么意思?这太模糊了。是否要在浏览器中打开文件(=将浏览器重定向到该服务器和脚本)?

标签: php http url ftp


【解决方案1】:

没有神奇的方法可以找出上传到 FTP 服务器的文件的 HTTP URL,而这恰好与 HTTP 服务器共享文件存储。

这是 FTP 和 HTTP 服务器的配置问题;他们如何将虚拟 HTTP 和 FTP 路径映射到实际文件系统路径和从实际文件系统路径映射出来。

映射可以是完全虚拟的和不确定的。


话虽如此,大多数虚拟主机在 FTP 和 HTTP 上都有一定的根,从那里映射是确定性的。

如果您连接到 FTP,您通常会进入 HTTP 主机的根文件夹,或者直接位于其下方(会有一个子文件夹,如 httpdocswww 映射到 HTTP 根目录)。

如果 FTP 帐户是 chrooted,根文件夹将是 /(或 /httpdocs 等)。

如果您有自己的域 (www.example.com),那么像 /index.html 这样的 FTP 路径会映射到 https://www.example.com/index.html

这是最简单的情况。它可以是一种更复杂的方式。但这是我们无法帮助您的事情。这是您的网络托管服务提供商和/或管理员的问题。

【讨论】:

    【解决方案2】:

    使用 ftp_pwd 可以达到这种程度。但将相对于(可能是public_html)。如果要使用 http 访问文件,请将文件添加到 http 公开目录。

    $ftp_server="host";
    $ftp_user_name="";
    $ftp_user_pass="";
    $file = "referesh.php";//tobe uploaded
    $name = "diff_adtaggeneration";
    $remote_file = $name."/referesh.php";
    // set up basic connection
    $conn_id = ftp_connect($ftp_server);
    
    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    
    $res = ftp_rawlist($conn_id, $name);
    //print_r($_SERVER);exit;
    if(count($res) > 0)
    {
    
        ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
    }
    else
    {
        ftp_mkdir($conn_id, $name);
        ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
    
    }
    $remotePath = ftp_pwd($conn_id)."/".$remote_file; ///public_html/name/refresh.php
    
    ftp_close($conn_id); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-25
      • 2014-10-17
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2011-02-19
      相关资源
      最近更新 更多