2013-04-30 127 views
1

我想用html表单上传文件。上传方法是通过FTP到FileZilla服务器。我已成功上传文件,但似乎只有它的文件扩展名和文件名是上传的文件。在Windows资源管理器中查看传输的文件时,该文件总是被损坏并且不显示文件大小。这是我的代码。请帮忙。用ftp_nb_put上传到FileZilla FTP服务器的文件已损坏

include 'Connections/ftpgangconnect.php'; 
ini_set("upload_max_filesize", "250M"); 
ini_set("post_max_size", "250M"); 

if (isset($_POST['upload'])) { 
    $name = $_FILES['myfile'] ['name']; 
    $size = $_FILES['myfile'] ['size']; 
    $type = $_FILES['myfile'] ['type']; 
    $temp = $_FILES['myfile'] ['tmp_name']; 
    $error = $_FILES['myfile'] ['error']; 
    $content = $_FILES['myfile']['content']; 
    $temp = $_FILES['myfile'] ['tmp_name']; 
    $name = $_FILES['myfile']['name']; 
    $dest_file ="/".$name; 

    // upload the file 
    $upload = ftp_nb_put($ftp, $dest_file, $temp, FTP_BINARY); 

    // check upload status 
    if (!$upload) { 
     echo "FTP upload has failed!"; 
    } else { 
     echo "Uploaded $name"; 
     ftp_close($ftp); 
    } 
} 

回答

1

检查ftp_nb_put function的示例。你应该调用在一个循环中ftp_nb_continue,直到上载完成:

// upload the file 
$upload = ftp_nb_put($ftp, $dest_file, $temp, FTP_BINARY); 

while ($upload == FTP_MOREDATA) 
{ 
    // Continue uploading... 
    $upload = ftp_nb_continue($ftp); 
} 

虽然除非你需要做任何事情都要在循环中,它没有意义的使用ftp_nb_put。只需使用简单的ftp_put代替:

$upload = ftp_put($ftp, $dest_file, $temp, FTP_BINARY); 
+0

谢谢它,它工作完美 – rain 2013-05-01 00:21:20