8

我想通过 FTP 上传表单中的文件。

<html>
  <body>
    <form enctype="multipart/form-data" action="upload_file.php" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
      Choose a file to upload: <input name="uploadedfile" type="file" /><br />
      <input type="submit" value="Upload File" />
    </form>
  </body>
</html>

这是PHP文件:

<?php

$ftp_server = "xxx";
$ftp_username   = "xxx";
$ftp_password   =  "xxx";

// setup of connection
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server");

// login
if (@ftp_login($conn_id, $ftp_username, $ftp_password))
{
  echo "conectd as $ftp_username@$ftp_server\n";
}
else
{
  echo "could not connect as $ftp_username\n";
}

$file = $_FILES["file"]["name"];
$remote_file_path = "/home/www/lifestyle69/import/".$file;
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII);
ftp_close($conn_id);
echo "\n\nconnection closed";

?>

FTP 连接成功,但文件不存在。

有谁能够帮助我?

谢谢!

4

3 回答 3

7

因为你有<input name="uploadedfile" type="file" />

$file = $_FILES["file"]["name"]; // wrong
$file = $_FILES["uploadedfile"]["name"]; // right

因为你需要PHP存储的临时副本的文件名,它存在于服务器上:

ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"],
        FTP_ASCII); // right

有关 $_FILES 的更多信息,请参阅PHP 文档

于 2013-01-11T15:08:58.160 回答
1

您确定要上传到的文件夹具有正确的权限吗?尝试将其更改为 777 并查看是否有效。

于 2013-01-11T14:58:29.177 回答
1

该文件以临时名称存储在服务器上,因此当您尝试上传时$_FILES['file']['name'],它会失败,因为该名称的文件不存在。相反,你应该打电话ftp_put()$_FILES['file']['tmp_name']

这里解释得好一点

于 2013-01-11T15:03:02.320 回答