2010-02-04 65 views
1
<form enctype="multipart/form-data"> 

<input type="file" name="mp3" /> 
<input type="submit" /> 
</form> 

我試過上面的,發現var_dump($_FILES);總是空的。如何使用PHP上傳.mp3文件?

它只適用於上傳文本文件或圖像。

UPDATE

我加入method="POST"它works.Why在這裏有必要POST

+0

爲了回答您的更新問題,你無法通過GET移動文件,這樣的文件上傳要求你指定你使用POST。 MP3文件可能會變得很大,所以請記住看看你的php.ini文件,並且可能調整MAX_POST_SIZE和UPLOAD_MAX_FILESIZE變量,以免意外阻塞較大的文件。 – Shane 2010-02-04 13:33:33

+0

我也瞭解到GET不能用來移動文件,但是背後的原因是什麼? – user198729 2010-02-04 13:38:26

+0

@ user198729 GET通常不安全,因爲它通過URL欄(www.domain.com?name=shane&bank_account=123456&mothers_maiden_name=doe)傳遞數據 - 在GET之前,無法對二進制數據執行任何操作(files = binary )但POST,因爲它在幕後工作可以處理二進制數據。我希望這有助於! – Shane 2010-02-04 13:55:08

回答

4

您是否指定表單方法明確POST並嘗試?

+0

爲什麼有必要? – user198729 2010-02-04 13:19:38

+0

+1我不知道當沒有指定GET時,GET就是表單的默認方法。 – 2010-02-04 13:23:50

+0

必要的原因是@Pekka剛纔所說的。 :) – 2010-02-04 13:31:08

5

MP3文件上傳應該像任何其他文件上傳一樣工作,沒有文件類型或擴展名的區別。

檢查您的文件是否不大於允許的大小。

PHP manual on file uploads

PHP manual on file uploads: Common pitfalls

更新: @Adhip古普塔解決它。我認爲GET似乎是FORM的默認方法,而不是POST。請點擊此處:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.1

此屬性指定將使用哪種HTTP方法提交表單數據集。可能的(不區分大小寫)值是「get」(默認值)和「post」。有關使用信息,請參閱表格提交部分。

+0

+1我敢說,MP3可能會比分發php.ini'upload_max_filesize'和/或'post_max_size' vars更大。 – 2010-02-04 13:12:13

+0

但是mp3完全沒有發送,我在螢火蟲中進行了驗證。 – user198729 2010-02-04 13:15:14

+0

咦?真奇怪。它有多大?您是否嘗試過按照Adhip Gupta的建議明確設置POST? – 2010-02-04 13:16:39

0

首先要檢查的是文件的大小以及PHP.ini中最大上傳大小的設置。

0

您的PHP代碼沒有錯。而且PHP和網絡服務器都不知道MP3文件和其他類型的內容之間的區別。

您是否檢查過與尺寸無關的內容?

你知道瀏覽器和PHP之間沒有其他的東西可以過濾嗎?

您是否嘗試過使用竊聽(例如wireshark)來確認數據正在離開瀏覽器/進入服務器?

C.

0

也許你錯過了MAX_FILE_SIZE應該包括在內。

<input type="hidden" name="MAX_FILE_SIZE" value="157286400" /> 

您還應該添加action="some.php"method="POST"<form>