目前我正在为上传大文件的问题而烦恼,所以我希望有人能帮我解决这个问题!
我有这个上传脚本,它可以完美地处理小文件,但是当我尝试较大的文件时,我会收到一条错误消息"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安装。这不是我想要的解决方案,但除了更换网络主机之外,它似乎是唯一可行的解决方案。我要再次感谢这里知识渊博的人们的投入。