【问题标题】:Uploading image to FTP using PHP使用 PHP 将图像上传到 FTP
【发布时间】:2014-12-07 14:25:41
【问题描述】:

我曾尝试在 php 中使用 ftp 连接将文件上传到服务器,但它无法正常工作,它正在连接但出现类似“连接到 XXXXXXXXXXXX,对于用户 XXXXXXXXXXXXX FTP 上传失败!”这样的错误。我已经尝试了以下代码,请帮助纠正它,..

image.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Welcome</title>
</head>

<body>
<form action="upload.php" enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input name="submit" type="submit" value="Upload File" />
</form>
</body>
</html>

上传.php

<?php
$ftp_server = "XXXXXX"; 
$ftp_user_name = "XXXXXXX"; 
$ftp_user_pass = "XXXXXXXX";  
$destination_file = "imagetest/123/".$_FILES['file']['name'];
$source_file = $_FILES['file']['tmp_name'];  

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

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

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// check upload status
if (!$upload) { 
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// close the FTP stream 
ftp_close($conn_id);
?>

【问题讨论】:

  • $destination_file 正确指定您的目录...并确保您的根文件夹中有目录...根据您的代码,目录是动态的,因为您已将文件名附加到目录路径。 ..
  • 警告:ftp_put():无法创建文件。在 /homeb/home/XXXXXXXXXX/www/upload.php @Fred
  • 删除 .$_FILES['file']['name'];在 $destination_file = "imagetest/123/".$_FILES['file']['name'];并尝试...我认为问题出在目录...
  • @Redsun 请参阅下面的答案。我也遇到了困难,但想通了为什么它不起作用。我们似乎有同样的问题,我希望我的回答也对你有用。

标签: php mysql file-upload upload ftp


【解决方案1】:

我已经测试了您的代码,但很难让它工作,但对我有用的是使用 /http_docs/public_html 作为基本/根文件夹。

  • 根文件夹名称因托管服务而异,因此请进行相应修改。

并进行一些修改:

<?php
$ftp_server = "XXXXXX"; 
$ftp_user_name = "XXXXXXX"; 
$ftp_user_pass = "XXXXXXXX"; 

$folder = "/http_docs/imagetest/123/";

$destination_file = $folder . $_FILES['file']['name'];

$source_file = $_FILES['file']['tmp_name'];

// rest of code

旁注:

不要不要使用完整的路径名。

即:/var/user/you/public_html/ 它不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多