如何将http上的文件远程上传到ftp空间里?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将http上的文件远程上传到ftp空间里?相关的知识,希望对你有一定的参考价值。

比如说一个文件http://...rar
我想将它不经过自己电脑就上传到ftp空间里
以前都是先从http上下载到本地电脑再上传ftp太麻烦了

使用虚拟主机空间作中转追问

很贵的耶

追答

是啊

参考技术A 这是没有办法的!就算是两个虚拟主机空间的话也需要下载到本地才行,除非那个你需要上传的文件在你的另外一个虚拟主机中才可以那样互转!不然的话还是需要下载到本地才可以上传的! 参考技术B 不可以的

如何从 FTP 远程服务器上的数据库上传文件? [复制]

【中文标题】如何从 FTP 远程服务器上的数据库上传文件? [复制]【英文标题】:How to upload files from database on FTP remote server? [duplicate] 【发布时间】:2021-10-18 01:45:04 【问题描述】:

我使用 PHP 将图像从主机上传到 FTP 远程服务器。

我已经把需要上传到FTP远程服务器的文件名存储在数据库里了。

在连接到数据库并查询图像的选择信息后,我将带有 $_SESSION 的变量传递给另一个 PHP 文件,以便将它们上传到 FTP 远程服务器上,如下所示:

conn_auth.php 用于选择目标图像:

<?php

if (file_exists(__DIR__.'/conn_auth/db_conn.php'))
    include __DIR__.'/conn_auth/db_conn.php';
else
    die('Connection is Failed ...!');


$conn = OpenConn();

$sql = "SELECT * FROM users where status = 'Active'";
$result = $conn->query($sql);

if ($result->num_rows > 0) 
    // output data of each row

    while($row = $result->fetch_assoc()) 
        $user_id = $row["id"];
        //search for user_id in userAthentication Table in DB
        $sql = "SELECT * FROM userauthentication where user_id = $user_id";
        $result = $conn->query($sql);
        $user_auth = $result->fetch_assoc();
        $user = array(
            'id'=>$row['id'],
            'name'=>$row['name'],
            'family'=>$row['family'],
            'auth_image'=>'',
            'file_name'=>$user_auth["image"],
            'phone'=>$row["phone"]
        );


    $url = "/home/root/app_name_1/uploads/".$user["file_name"];

    
    if(!file_exists($url))
        $url = "/home/root/app_name_2/uploads/".$user["file_name"];

    
    $user['auth_image'] = $url;

    session_start();
    $_SESSION["userInfo"] = $user;
    $_SESSION["userAuth"] = $user_auth;

    if (file_exists(__DIR__.'/conn_auth/get_auth.php'))
        include __DIR__.'/conn_auth/get_auth.php';
    else
        die("I can't Connect to the Server");
    

   
 else 
    echo "0 results";


CloseConn($conn);

在这个文件上,我尝试用 ftp_put() 方法连接到 FTP 远程服务器并上传图片,但它不起作用:

<?php
include_once __DIR__.'../conn_auth.php';
session_start();
$ftp_server="*.***.***.**";
$ftp_user_name="****";
$ftp_user_pass="**********";
$file = $_SESSION["userInfo"]['auth_image']; //to be uploaded
$folder_name = $_SESSION["userInfo"]['phone'];
$file_name = $_SESSION["userInfo"]["file_name"];
$remote_file = "/HDD/pics/$folder_name";

$conn_id = ftp_connect($ftp_server,21);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_mkdir($conn_id,'auth_pics').ftp_chdir($conn_id,'auth_pics');



if (ftp_mkdir($conn_id,"$folder_name"))
    ftp_chdir($conn_id,$folder_name);

else
    echo "I Can't Create Folder For : ".$folder_name;
    die();

// upload a file
$upload = ftp_put($conn_id, $remote_file, $file, FTP_BINARY);

if ($upload) 

    echo "successfully uploaded : $file\n";
 else 
    echo "There was a problem while uploading...\n";

// close the connection
ftp_close($conn_id);
?>

【问题讨论】:

你看到了什么错误信息? ftp_put() 方法返回 false 并且不上传任何内容...每次执行代码时都会收到此错误:“上传时出现问题...”@Erik跨度> 【参考方案1】:

大多数情况下,您的 FTP 服务器不支持主动模式连接,因此您可以尝试使用 ftp_pasv 切换到被动模式,但请务必在登录服务器后(在 ftp_login 之后)执行此操作。

如果您在使用本机 API 函数时遇到一些麻烦,您可能想尝试我构建的 FTP 客户端库,例如 this。

希望您发现此答案对您有用。

【讨论】:

谢谢你,查基尔。最后,我的问题通过您建议的解决方案得到了解决。 ♥ @el-amrani-chakir 太棒了,好锁!

以上是关于如何将http上的文件远程上传到ftp空间里?的主要内容,如果未能解决你的问题,请参考以下文章

求助,如何把MYSQL数据库上传到FTP空间里去?

远程桌面登录后如何拷贝文件到本地机器?

如何在 HTTP 请求中发送文件并通过 Mule 中的 FTP 将其上传到文件服务器

C# 将FTP文件转移到另一个FTP服务器上如何实现

C# winform如何实现批量上传文件到远程服务器?

java如何将文件上传其他服务器上 我的文件系统准备单独弄个系统,如何将文件上传到那个系统里