我为客户制作了CMS。他可以做的一件事是上传PDF文件。我们已经彻底测试了这一点并且没有遇到任何错误。但是,他似乎无法上传任何东西。永远不会上传该文件。他的浏览器一直在加载。
我的客户端使用Firefox(不确定哪个版本,但我认为无关紧要),他试图上传的PDF文件大约为5MB,没有什么极端。
浏览器在上传文件时没有完成它的请求是否有任何理由?我不认为文件已损坏。
我不认为问题出在我的剧本中......但仍值得发帖:
if(!empty($_FILES['pdf'])) {
$path = '../pdf/';
$filename = $_FILES['pdf']['name'];
if(!empty($assoc['pdf'])) {
$oldfile = $path.$assoc['pdf'];
if(file_exists($oldfile)) {
unset($oldfile);
}
}
$success = move_uploaded_file($_FILES['pdf']['tmp_name'], $path.$filename);
}
编辑:他向我发送了他要上传的PDF文件。上传大约10秒......我正在为他提供一个速度测试的链接,哈哈。
答案 0 :(得分:1)
我可能会遇到两个问题,可能不是您的确切问题,但可能会引导您回答。
<强>#1。 POST_MAX_SIZE或UPLOAD_MAX_FILESIZE不够大
php程序员常常忘记两个配置,这可能是你最明显的问题。你的测试已经完成,但是他们是用大文件完成的吗?
使用htaccess或php.ini(取决于您的服务器配置),您可以覆盖
的php设置例如给他们20M:
/*.HTACCESS*/
php_value upload_max_filesize 20M
php_value post_max_size 20M
/*PHP.INI*/
upload_max_filesize = 20M
post_max_size = 20M
你不能使用ini_set(),因为这些变量是在php开始处理之前使用的,因此在上下文中会变得无用。
<强>#2。 enctype不是multipart / form-data
虽然非常不可能,但您可能忘记将表单上的enctype属性设置为“multipart / form-data”,因此根本不会将任何内容发送到服务器。但我怀疑这是你的问题,因为你说你经过广泛的测试。
但是,有时候,我们移动东西并忘记测试(它也发生在我身上),我确信之前有效,现在不行,所以请确认一下以确保:)
祝你好运答案 1 :(得分:0)
让客户端尝试在与Firefox不同的浏览器中上传文件。如果它适用于其他浏览器,请尝试删除(或重命名/移动,用于测试目的)客户端MimeTypes.rdf中的文件Firefox profile folder。
如果之后的PDF上传有效,则会遇到2007年首次报告的a Firefox bug(basically the same here,2006年报告)。简而言之,用户从中下载文件的任何网站都有可能在下载文件的扩展名中破坏MimeTypes.rdf文件 - 恶意或意外/不知情。
你可以做的事情: