2012-07-17 85 views
4

我试图从本地PC上传图像文件到远程服务器。图片来自于一个简单的HTML输入(类型=文件),文件数组包含这些:php ftp_put不会创建文件

Array ([name] => image42.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\phpBB52.tmp [error] => 0 [size] => 6051) 

正如你看到的,我的本地PC使用的是Windows。它试图上传的图像文件的代码如下:

$conn_id = ftp_connect($ftp_server, $ftp_port); 

$login_result = ftp_login($conn_id, $ftp_username, $ftp_password); 

if(!ftp_chdir($conn_id, $folder_path)) 
{ 
    $create_folder = ftp_mkdir($conn_id, $folder_path); 
    ftp_chmod($conn_id, 0777, $folder_path); 
} 

这完全连接到服务器,甚至创建一个文件夹,如果不是存在了。然后,当我们得到的上装部分,

ftp_pasv($conn_id, true); 

// upload a file 
$upload = ftp_put($conn_id, $new_dir, $file_dir, FTP_BINARY); 

变量$upload得到false。 (即文件的tmp_name)。

$new_dir包含图像路径远程目录:img.example.com/data/images/blabla.jpg

而且,返回错误是:

Warning: ftp_put() [<a href='function.ftp-put'>function.ftp-put</a>]: Could not create file. in C:\wamp\www\example\example.php on line 95 

我还没有发现任何有用的既不是谷歌,也不StackOverflow上。可能是什么原因?

+1

查看您的文件权限 – 2012-07-17 08:12:19

+0

哪里?它在远程服务器上都是777。另外,我在Windows上登录的用户具有管理员权限。 – gzg 2012-07-17 08:13:49

+0

'bool ftp_put(资源$ ftp_stream,字符串$ remote_file,字符串$ local_file,int $模式)' - 不混合参数?第二是远程文件,第三是本地文件,但在你的例子中,你使用本地上传的第二和第三作为远程? – Laimoncijus 2012-07-17 08:31:38

回答

3

这对我有效。它可能是服务器的根目录不同于FTP根目录。

尝试使用另一个程序登录到您的FTP帐户并检查根目录。例如,我的FTP根目录是/public_html/,但服务器是/home/cms/public_html/。因此,如果我的文件的远程目标设置为/home/cms/public_html/images/82.jpg,请将其更改为/public_html/images/82.jpg

0

我的脚本试图定期上传一个文件到FTP位置(用相同的名称覆盖以前上传的文件)并且工作正常。

它现在开始显示此错误,并且我从FTP位置删除了该文件,并使用该脚本再次将其上载,并且错误消失。

该文件必须已被FTP位置中的任何其他应用程序锁定,以防止其覆盖或可能已损坏。