【问题标题】:How to upload files from database on FTP remote server? [duplicate]如何从 FTP 远程服务器上的数据库上传文件? [复制]
【发布时间】: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跨度>

标签: php database server ftp hosting


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢你,查基尔。最后,我的问题通过您建议的解决方案得到了解决。 ♥ @el-amrani-chakir
  • 太棒了,好锁!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2017-05-23
相关资源
最近更新 更多