我想将文件从用户的计算机上载到FTP中的文件夹uploads
,但它不起作用。你能帮我吗?
$ftp_server = "some ip";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, "some name", "some password");
$target_dir = "uploads/";
$target_file = basename($_FILES["filename"]["name"]);
if (ftp_fput($ftp_conn, $target_dir.$target_file, FTP_ASCII))
{
echo "Successfully uploaded $target_file.";
}
else
{
echo "Error uploading $target_file.";
}
答案 0 :(得分:1)
您需要指定要上传到FTP服务器的本地文件(从Web服务器开始)。
您可以使用$_FILES["filename"]["tmp_name"]
检索包含通过HTTP POST从用户的计算机上传到Web服务器的文件的临时文件的名称。阅读PHP中的POST method uploads。
然后您可以将其传递给ftp_put
(不需要ftp_fput
):
ftp_put($ftp_conn, $target_dir.$target_file, $_FILES["filename"]["tmp_name"], FTP_IMAGE)
代码中的其他两个问题(不是您遇到的直接问题,但是您将在解决后立即面对它们):
如果要上载二进制文件(例如FTP_ASCII
),则绝对不要使用.mp3
。使用FTP_IMAGE
。
答案 1 :(得分:0)
使用php-ftp-client库:
$ftp = new \FtpClient\FtpClient();
$ftp->connect($host, true, 990);
$ftp->login($login, $password);
// upload with the BINARY mode
$ftp->putAll($source_directory, $target_directory);
// Is equal to
$ftp->putAll($source_directory, $target_directory, FTP_BINARY);
// or upload with the ASCII mode
$ftp->putAll($source_directory, $target_directory, FTP_ASCII);