3

把我的头发拉在这里一点。我想要做的就是有一个 HTML 表单,然后 PHP 将所选文件上传到 FTP 服务器上的某个目录,但似乎没有任何工作正常。

这是html表单:

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

这是它下面的PHP(在同一个文件上):

<?php
$ftp_server = "myftp.co.uk";
$ftp_user_name = "myusername";
$ftp_user_pass = "mypass";
$destination_file = "/public_html/my/directory/";
$source_file = $_POST['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);
?>

它似乎可以连接到 FTP,但没有上传 - 失败。我假设这与我处理要上传的文件的方式有关..?

另外,当我在这里时,如何将已上传的文件的名称设置为变量?

4

2 回答 2

4

在此处更改您的代码

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

在这里,我已将 $_POST 更改为 $_FILES ....

于 2013-09-10T12:14:41.947 回答
0

上面的代码看起来不错,但是 FTP 被动命令,即 ftp_pasv($conn_id, true); 应该在 ftp_login 之后,否则它将不起作用。你可能会得到这样的错误: ftp_put(): I won't open a connection to 172.xx.xx.xx (only to xx.xxx.xxx.xxx)

<?php
$ftp_server = "your server or host";
$ftp_user_name = "username";
$ftp_user_pass = "password";
$ftp_port = "port";
$destination_file = "/public_html/my/directory/";
$source_file = $_FILES['file']['tmp_name'];

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

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
// ftp passive cmd
ftp_pasv($conn_id, true);

// 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);
?>
于 2017-11-24T07:37:16.250 回答