我在php中创建了一个上传脚本,它接受一个文件,调整大小并创建一个裁剪的方形缩略图。脚本本身似乎工作正常。
然而,当我尝试通过Firefox上传图像时,单击提交按钮时,浏览器会显示加载动画,但它从不调用脚本,它只是停留在当前页面上。如果不上传图像,则可以找到该脚本并运行。
我在safari中尝试过,我没有遇到同样的问题,我可以从表单上传图片,它会处理它并带我到正确的页面。
我已经厌倦了从表单中调用一个基本脚本,它只打印出$ _POST和$ _FILES,并得到相同的结果,如果有图像,它将无法访问脚本,如果没有图像,它运行正常。
我只是想知道是否有人知道发生了什么事?
=更新=
好吧,所以我仍然遇到了这个问题,我似乎认为我已经找到了导致它的原因,但后来我发现了一些与之完全矛盾的东西。
此刻,我注意到在清除我的Firefox缓存后我可以成功上传,但我只能上传一张图片,然后当我尝试上传另一张图片时,我不能,它只是重置后的连接“加载......”一点。
另外,我注意到我可以按Ctrl + F5几次并再次上传。
虽然有办法解决这个问题,但我不想要一个需要用户清除cookie或每次需要上传时刷新的表单。正如我之前提到的,IE / Opera / Safari / Chrome中不会出现此错误。
似乎Firefox存储了一些内容,我不确定是什么。 任何帮助将不胜感激。
如果它有帮助,那就是我正在使用的代码。
HTML表单
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<label for="file">Choose a file to upload</label>
<input id="file" name="file" type="file" /><br />
<input type="submit" value="Upload File" name="submit" />
PHP:
if (isset($_POST['submit'])) {
echo "Processing...<br/>";
if (isset($_FILES['file']['name'])) {
$file_array = $_FILES['file'];
echo "Uploading...";
upload File($file_array);
echo "...Done";
}
}
回声让我看到发生了什么。如果它们实际上都没有输出。因此,由于某种原因,表格未提交。这就是为什么它没有进入脚本。我不知道为什么。我没有CSS或JavaScript错误。
==更新==
好的,我正在尝试更多的东西,但仍然没有运气,HTML,CSS和JavaScript都是有效的。我已经完成了IIS重置,我重新创建了我的Firefox配置文件。现在还好运。
我再次测试它,这次我在加载过程中停止了它(在重置连接之前),然后尝试去网站的另一页,然后冻结继续,它仍会说“正在加载......“和”等待本地主机......“。不知道该怎么做,我有一些设置吗?但那么为什么它不影响其他浏览器呢?
==更新==
正如我在下面提到的,似乎AVG Linkscanner / Active冲浪盾似乎导致了这个问题,并且有很多其他人有类似问题的报告。我从AVG Free v9.0.733更新到v9.0.790,我仍然遇到同样的问题。我将浏览AVG支持论坛并在那里发布一些内容,因为它似乎是一个AVG问题。
如果有人有更多见解,请在下面发帖。非常感谢:)
答案 0 :(得分:2)
好的,我正好想到这个,你可能会认为这只是一个愚蠢的错误,但请继续阅读。
如果我没有&lt; html&gt;&lt; body&gt; .. etc标签,只是.. .. / / p>
<form enctype="multipart/form-data" action="up.php" method="POST">
<label for="file">Choose a file to upload</label>
<input id="file" name="file" type="file" /><br />
<input type="submit" value="Upload File" name="submit" />
</form>
然后我在表单提交时遇到了firefox挂起的问题。
如果我有正确的标签,如..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body >
<form enctype="multipart/form-data" action="up.php" method="POST">
<label for="file">Choose a file to upload</label>
<input id="file" name="file" type="file" /><br />
<input type="submit" value="Upload File" name="submit" />
</form>
</body>
</html>
然后它似乎有效。现在这看起来很简单,但我动态构建我的页面,所以我只有一个文件,其中只包含页面中包含的表单代码。
就目前而言,尽管将表单代码放在一个单独的文件中应该没有什么区别,因为它全部放在服务器端。
答案 1 :(得分:0)
有时候,相对路径会被不同的浏览器区分开来,但实际上并不确定,而是尝试通过在./
前加上路径来指定当前目录,例如:
$target_path = "./public/photos/";
其余的代码对我来说很好。
答案 2 :(得分:0)
万一你使用最新的FF 3.6我遇到了完全相同的问题,任何加载一个大文件的表单(1MB它应该)似乎阻止了FF上传。 在IE7 / Safari / Opera上它可以工作。
答案 3 :(得分:0)
然后当您右键单击FF并查看源代码时,它应该与上面代码中的内容完全相同(如果我有正确的标签,如下所示)。
答案 4 :(得分:0)
HTML 4定义了name属性 元素a,小程序,形式,框架, iframe,img和map。 HTML 4也 介绍了id属性。两者的 这些属性被设计为 用作片段标识符。
在XML中,片段标识符是 类型ID,只能有一个 每个类型ID的单个属性 元件。因此,在XHTML 1.0中 id属性定义为类型 ID。为了确保XHTML 1.0 文档是结构良好的XML 文档,XHTML 1.0文档必须 定义时使用id属性 元素上的片段标识符 上面列出的。
也许在id
添加form
可以解决您的问题。
答案 5 :(得分:0)
FireFox可能包含if (isset($_POST['submit'])) {
和变量$_POST['submit']
可能有问题吗?
<pre>
<?PHP
print_r($_POST);
?>
</pre>
答案 6 :(得分:0)
这对你没什么帮助,但我确实遇到了同样的问题。我甚至重新安装了FF,清除了缓存,向右删除了代码(一个非常简单的形式,没有验证,所有PHP都被剥离 - 无论是在加载还是在回发后)。我在FF 3.6.13中遇到了问题,并且针对当前版本的Safari(win),Chrome,Opera和IE进行了测试,其中代码都完美无缺。我的代码验证为严格的XHTML,上面的所有建议都已经存在......我正在使用我的本地(在同一台计算机上)网站。
MANY 感谢您指向AVG Link扫描仪...禁用它确实解决了问题但仍然让我觉得FF有一个错误,因为“所有”其他浏览器与AVG Link很好地配合扫描仪。