通过网页上传FTP文件-Why won';它不适用于较大的文件


FTP file upload via webpage - Why won't it work for larger files?

目前我正在为上传大文件的问题而烦恼,所以我希望有人能帮我解决这个问题!

我有这个上传脚本,它可以完美地处理小文件,但是当我尝试较大的文件时,我会收到一条错误消息"Filename cannot be empty",我觉得这很令人困惑。

上传到第三方ftp主机。

这就是脚本:-

    $file = $_FILES['ufile']['tmp_name'];
    $remote_file = $_FILES['ufile']['name'];
    $conn_id = ftp_connect("www.ftphostinguk.com");
    $ftp_user_name = "****";
    $ftp_user_pass = "***********";
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
      echo "successfully uploaded $file'n";
    } else {
     echo "There was a problem while uploading $file'n";
    }
    ftp_close($conn_id);

我想最让我困惑的是,为什么它适用于小文件,而不适用于大文件?

提前谢谢。

编辑以添加:当我使用"echo"显示文件名时,我会得到较大文件的空白响应。我想知道我是否误解了以这种方式上传文件的基本过程?我假设临时文件是上传到ftp服务器的,但有可能文件是先上传到Web服务器的吗?

您的PHP脚本很可能超时了,请尝试将这些脚本添加到页面顶部并调整设置(300秒即5分钟):

ini_set('upload_max_filesize', '10M');  
ini_set('post_max_size', '10M');  
ini_set('max_input_time', 300);  
ini_set('max_execution_time', 300); 

这是一个常见的问题,因为PHP不接受上传的大文件($_FILES

您可以在php.ini中更改行为:

ini_set('max_input_time','');
ini_set('upload_max_filesize', '');  
ini_set('post_max_size', '');  

我认为,如果我访问php.ini,所提供的答案可能会解决我的问题,但不幸的是,我没有,从我今天的研究来看,我的问题似乎是webhosts文件限制。

因此,为了解决我的问题,我选择了一个不同的攻击角度。我创建了一个表单,直接登录到ftphost的基于web的界面,即net2ftp安装。这不是我想要的解决方案,但除了更换网络主机之外,它似乎是唯一可行的解决方案。我要再次感谢这里知识渊博的人们的投入。