2012-02-08 30 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