如何获取上传到FTP服务器的文件的HTTP URL

时间:2017-09-26 04:43:50

标签: php http url ftp

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

$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),我知道这只显示当前服务器的详细信息,但是如何获取上传服务器(其他服务器)的根目录完整文件路径。任何帮助表示赞赏...

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

话虽如此,大多数网络托管在FTP和HTTP上都有一些根,从那里映射是确定性的。

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

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

如果您拥有自己的域(www.example.com),则/index.html之类的FTP路径会映射到https://www.example.com/index.html

这是最简单的案例。这可能是一种更复杂的方式。但那是我们无法帮助你的。这对您的网络托管服务提供商和/或管理员来说是一个问题。