目前,在上传大型文件的过程中,我的头发一直在流泪,所以我希望有人可以帮忙解决这个问题!
我有这个上传脚本,可以很好地处理小文件,但是当我尝试更大的文件时,我收到一条错误消息“文件名不能为空”,我发现这很麻烦。
上传将转到第三方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服务器,但文件是否可能首先上传到网络服务器?
答案 0 :(得分:3)
您的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);
答案 1 :(得分:1)
这是一个常见问题,因为PHP不接受大型上传文件($_FILES
)
您可以在php.ini中更改行为:
ini_set('max_input_time','');
ini_set('upload_max_filesize', '');
ini_set('post_max_size', '');
答案 2 :(得分:0)
我认为已经提供的答案可能会解决我的问题,如果我访问php.ini,不幸的是我没有,而且从我今天的研究中看来我的问题是webhosts文件限制。
所以为了解决我的问题,我选择了一个不同的角度来攻击它。我创建了一个直接登录到ftphost的基于Web的界面的表单,这是一个net2ftp安装。它不是我想要的解决方案,但除了改变webhost之外,它似乎是唯一可行的解决方案。 我再次感谢这里知识渊博的人们的意见。