php将本地文件上传到ftp服务器

时间:2014-02-20 23:12:35

标签: php upload ftp

据我所知,ftp_put方法将文件从本地服务器计算机上传到ftp服务器但我在使用它时遇到问题,当我尝试执行这样一个简单的脚本时:

 <?php
// connect and login to FTP server
$ftp_server = "ftp.example.com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file = "localfile.txt";
// upload file
if (ftp_put($ftp_conn, "serverfile.txt", $file, FTP_ASCII))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}

// close connection
ftp_close($ftp_conn);
?>  

操作成功完成,但上传到我的ftp服务器的文件始终为零字节大小!

我也尝试启用被动模式,但仍然会上传空文件。

3 个答案:

答案 0 :(得分:0)

尝试启用track_errors并访问$php_errormsg

ini_set('track_errors', 1);
// put operation
// if error
var_dump($php_errormsg);

答案 1 :(得分:0)

我有同样的问题。当我改变&#34; FTP_ASCII&#34;到&#34; FTP_BINARY&#34;它解决了我的问题和按预期上传的文件。

答案 2 :(得分:0)

我也遇到了这个问题。有点迟,但我想我会发布我的解决方案:

$file_name = "localfile.txt";

从现有文件中获取内容

$content = file_get_contents('http://www.somewhere.com/'.$file_name);

...或制作临时文件内容

$content = "This is content";

上传文件

// connect
$conn_id = ftp_connect($host);
$login = ftp_login($conn_id, $username, $password);
ftp_pasv($conn_id, true);

// create
$tmp = fopen(tempnam(sys_get_temp_dir(), $file), "w+");
fwrite($tmp, $content);
rewind($tmp);

// upload
$upload = ftp_fput($conn_id, "serverfile.txt", $tmp, FTP_ASCII);

// close
ftp_close($conn_id);