2014-04-11 121 views
0

我必须通过ftp使用php来传输文件。这些文件很大(也超过500MB)。 所以我想用ftp来使用php。php通过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传输中是否也考虑超时。 如果我通过代码写入通过php页面像upload.php传输文件,我有Web服务器上的执行时间限制设置?

回答

0

在服务器端启用允许恢复文件上传的功能。

从php中,你可以使用system()或exec()等函数,通过command_line选项调用ftp。

而且,是的,在php中有以下限制:max_upload_size,max_execution_time,max_post_size等。 如果需要,您将不得不将整个过程分成几个步骤,重新加载页面。

+0

所以你说的PHP和Ajax我可以解决这个问题?例如用XMLHttpRequest对象... – user3298358

+0

你误会了我。我告诉你的是,在php中使用命令行语法,意思是使用“system('通过unix命令行调用ftp upload')”来调用ftp,这将确保你的文件将被上传。您需要知道您的本地ftp程序以及如何通过命令行调用它。 http://php.net/manual/en/function.system.php你可以避免php的时间限制,将它们设置为0,并且在php端使用特殊的中止 - 即使超过了时间限制,启动的脚本也会继续执行。 http://php.net/manual/en/function.ignore-user-abort.php – Toly