2012-02-08 63 views
0

我有一個應用程序here如何解決服務器端的通知和檢查文件?

我有2個問題:

問題1:如何解決的通知?

下面是代碼:

<?php 

If(isset($_POST)) 
{ 

$allowedImageTypes = array("image/pjpeg","image/jpeg","image/jpg","image/png","image/x-png","image/gif"); 
$file = $_FILES['imageFile']; // this is the line the notice is pointing to 
$fileType = $file['type']; 
if (!in_array($fileType, $allowedImageTypes)) { 
    echo "Unsupported file type"; 
} 
else 
{ 
    // Process the file 
} 
} 
?> 

問題2:如果你打開應用程序,點擊「添加問題」按鈕。這將添加一個表格行。現在在文件輸入中選擇一個無效的文件(例如.txt文件)。現在點擊「提交詳細信息」按鈕,它將在問題1中提示「不支持的文件類型」。現在返回文件輸入並將文件更改爲有效格式(.png,.jpg,.jpeg或.gif),然後在完成後單擊「提交詳細信息」按鈕,此時會出現一個確認框,指出一條消息並如果你想繼續。

現在,這一切工作在客戶端的罰款,但我想要的是,當用戶點擊「提交詳細信息」按鈕,我希望它檢查文件格式是在服務器端正確以及爲客戶端安全目的。如果有效,則不顯示消息,如果無效,則在「不支持的文件類型」頂部顯示消息。如果文件輸入是空白的,那麼它是有效的,但如果一個文件輸入包含錯誤的文件格式,則顯示無效的消息。有誰知道如何做到這一點?幾乎實現這個PHP代碼?

您可以查看源代碼查看完整的代碼,如果你想

+0

嘗試改變的解決方案。如果(isset($ _ POST))。如果(計數($ _ POST)> 0)看我爲進一步的細節回答 – 2012-02-08 03:34:14

回答

0

如果改變(isset($ _ POST))到如果(計數($ _ POST)> 0) 或者即使你是否更好(isset( $ _FILES [「鏡像文件」))

問題2

工作它不是傳統的HTML能夠確認在客戶端。你可以看像pluploadswfupload jquery的連接器,是Flash和HTML5面向上傳解決方案

+0

這不是通知被觸發的原因。他會需要'if ifset($ _FILES ['imageFile'] ['name']){// ...'在使用'$ _FILES'或'if(isset($ _ POST ['submitDetails']) ){// ...' – Josh 2012-02-08 03:33:16

+0

hi josh如果你注意到$ _FILES只會在表單實際提交時被處理。但是通知發佈數據。 $ _POST是全局數組總是被設置的。請看這裏http://ideone.com/3ecwx – 2012-02-08 03:38:12

+0

沒錯。如果已設置和/或表單已被提交,他應該只使用'$ _FILES',這是我提供的代碼完成的;不是如果'$ _POST'設置*一般*。 – Josh 2012-02-08 03:42:07