我正在尝试将文件从本地计算机驱动器上传到服务器。
我使用以下代码上传了该文件,但它上传了0字节大小的文件或空白文件。
另外,我没有得到本地文件的所有文件路径。它显示了服务器路径。例如,如果我的本地文件位于D:/abc/abc.txt,则显示/public_html/abc.txt
请帮忙。
<?php
echo "hi";
echo "\n";
$host = '000.000.00.000';
$usr = 'userName';
$pwd = 'password';
$temp = $_FILES["file"];
$local_file = realpath($_FILES["file"]["name"]["r"]);
$ftp_path = "/public_html/Download/".$_POST['file'];
echo "This is file to Upload :";
echo "\n";
print($local_file);
// connect to FTP server (port 21)
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");
// send access parameters
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
// perform file upload
print ("This is ftp path : ");
print($ftp_path);
print("New line : ");
$upload = ftp_put($conn_id, $ftp_path, $local_file , FTP_ASCII , 0);
print (!$upload) ? 'Cannot upload' : 'Upload complete';
print ("\n") ;
ftp_close($conn_id);
?>
答案 0 :(得分:2)
$_FILES['file']['name']
是客户端计算机上的文件名,而不是服务器。上传将放入服务器上的$_FILES['file']['tmp_name']
,因此这是您应该使用FTP发送的文件。
您可以在设置$_FILES['file']['name']
时使用$ftp_path
,以便目标文件与用户的原始文件具有相同的名称。 $_POST['file']
不存在 - 文件上传仅放在$_FILES
中,而不是$_POST
。