2010-02-27 33 views
3

我在php中創建了一個上傳腳本,它接受一個文件,調整其大小,並創建一個剪裁的方形縮略圖。腳本本身似乎工作正常。Firefox上傳表單問題

然而,當我試圖通過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 /主動衝浪盾似乎導致此問題,並有與它有類似問題的其他許多報告。我從AVG Free v9.0.733更新到v9.0.790,而我仍然遇到同樣的問題。我打算瀏覽AVG支持論壇,也許會在那裏發佈一些內容,因爲它似乎是一個AVG問題。

如果有人確實有任何更深入的瞭解,請發表以下。它的大加讚賞:)

+4

如果您希望我們查看它,請發佈腳本。 – 2010-02-27 15:38:11

+0

就是這樣,它甚至沒有把腳本叫做句號。即使我設置表單將數據發送到像上面提到的簡單腳本,它也不會。 – cast01 2010-02-27 15:43:27

+0

按CTRL + SHIFT + J打開Firefox控制檯並檢查是否有錯誤信息? – EricLaw 2010-02-27 15:53:15

回答

0

有時候,相對路徑由不同的瀏覽器,而不是確定實際上卻試圖通過與./前綴路徑指定當前目錄,如不同的看法:

$target_path = "./public/photos/"; 

休息的代碼對我來說看起來很好。

+0

感謝您的幫助,但這個過程並沒有得到這麼多。無論如何,我做出了改變,並測試了沒有運氣。 即時通訊從http://localhost/upload/index.php調用它 表單已被設置爲發送數據到upload.php在同一目錄。 如果選擇了一個圖像,當我點擊提交時,它只是掛載index.php與加載動畫布萊恩輪。 我不知道爲什麼。 – cast01 2010-02-27 20:17:26

+0

@ cast01:確保你對目錄chmod的寫入權限爲755 – Sarfraz 2010-02-27 20:26:37

+0

再次感謝,但仍然沒有運氣。我完成了難倒。 – cast01 2010-02-27 22:17:49

0

萬一你使用的是最新的FF 3.6我遇到了一模一樣的問題,任何形式加載一個大文件(1MB這是足夠多)似乎阻止FF上傳。 在IE7/Safari/Opera上有效。

+0

嘿,謝謝,最初我以爲它可能是我的FF版本,但即時通訊仍然使用3.5,上傳不同,大多數只有200-300KB。 – cast01 2010-02-28 15:05:55

2

好吧,即時通訊與此取得了一些進展,你可能會認爲這僅僅是一個愚蠢的錯誤,但閱讀。

如果我沒有在< HTML> <體> ...等標籤,只是有..

<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> 

然後好像這個工作。現在看起來很簡單,但是我動態構建了我的頁面,所以我只有一個文件包含頁面中包含的表單代碼。

那至於香港專業教育學院得到的,有一個單獨的文件形式的代碼althought應該因爲它的都放在一起服務器端沒有差別。

+0

大聲笑我面對這個問題就像1天,我只是意識到我的問題是Firefox,因爲在Chrome中上傳的作品,我可以看到在右下角的進展。我想知道是否有任何插件顯示Firefox的上傳進度條。 – themis 2012-02-25 09:35:35

0

然後,當你在FF和查看源文件點擊右鍵,就應該看起來就像它在上面的代碼中(如下:「如果我有正確的標籤,如..」)。

+0

是的,在頁面源代碼中看起來都很好。頁面構建正確。 – cast01 2010-03-08 16:54:29

+0

如果你想你可以發佈它,只是爲了確保。 – Martin 2010-03-08 18:46:49

0

xhtml 1.0 specification

HTML 4中定義的name屬性 的元素的,小應用程序,表格,框架, iframe中,IMG,與地圖。 HTML 4還引入了id屬性 。這兩個 這些屬性被設計爲 用作片段標識符。

在XML中,片段標識符是 類型ID,並且存在只能每 元件ID類型的 單個屬性。因此,在XHTML 1.0中, id屬性被定義爲 ID。爲了確保XHTML 1.0 文檔具有良好結構的XML 文檔,在定義 上面列出的元素 上的片段標識符時,XHTML 1.0文檔必須使用id屬性。

也許增加一個idform可以解決您的問題。

+0

你好,我採取了你的建議,並添加一個id =「myform」到窗體標記,並仍然我得到相同的行爲。 雖然我認爲它仍然可以作爲驗證,但是由於iive與不同的文檔類型混淆在一起,有一點我認爲它是過渡性的,並且問題更頻繁發生。 (我不知道他們是否是相關問題,或者只是在這個階段的一個真相。 – cast01 2010-03-09 17:47:51

+0

正如我上面所說的(在OP中),嘗試使用「標準」html而不符合xhtml標準並查看它是否觸發了您的php腳本 – ccheneson 2010-03-09 17:50:34

+0

好的,以及改變doctype過渡,通過驗證和運行它有效,我的web開發工具欄也沒有顯示html/css/js錯誤。問題似乎不太經常發生,但不足以讓我打折 – cast01 2010-03-09 18:04:49

0

可能出錯if (isset($_POST['submit'])) {和變量$_POST['submit']不包含在FireFox中嗎?

<pre> 
    <?PHP 
     print_r($_POST); 
    ?> 
</pre> 
+0

的「post」方法,但是我的alreadt在$ _POST值上執行了print_r。在frirefox不重置連接的情況下,它們會正確打印出來。但是,當它重置後,腳本甚至無法看到實際發佈的內容。該表格已提交,但其間懸掛。 – cast01 2010-03-15 12:27:53

0

這不會幫助你很多,但我有完全相同的問題。我甚至重新安裝了FF,清除了緩存,剝離了代碼(無需驗證即可完成一個非常簡單的表單,並且所有PHP都被剝離 - 無論是在加載時還是在回發時)。我在FF 3.6.13中遇到了這個問題,並且已經針對當前版本的Safari(win),Chrome,Opera和IE進行了測試,其中代碼完美地工作。我的代碼驗證爲嚴格的XHTML,並且上面的所有建議都已經在那裏...更多我使用我的本地(在同一臺計算機上)的網站。

MANY感謝指着我向AVG鏈接掃描儀...禁用它確實解決這個問題,但仍然讓我思考FF有一個錯誤的「所有」其他瀏覽器上的AVG鏈接掃描儀發揮很好。