2010-01-03 77 views
0

我想验证上传的文件确实有.csv扩展名。但是,此代码不起作用:Drupal:验证文件扩展名吗?

function upload_validate($form, &$form_state) { 
     // code that does work ... 
else { 
    $file = file_save_upload('upload'); 
    $errors = file_validate_extensions($file, 'csv'); 
    if (! empty($errors)) { 
    form_set_error('', $errors[0]); 
    } 
    else { 
    $_SESSION[FILE_KEY] = serialize($file); 
    } 
} 
} 

我在做什么错?

+0

不工作意思是什么? – 2010-01-04 11:20:23

+0

无法为非CSV文件设置错误。 – 2010-01-04 18:27:20

回答

0

<wrong>
我认为你的问题是form_set_error()。下面是实际的函数(注释):

<?php 
function form_set_error($name = NULL, $message = '', $reset = FALSE) { 
    static $form = array(); 
    if ($reset) { 
    $form = array(); 
    } 
    // here is where setting $name to '' is a problem 
    if (isset($name) && !isset($form[$name])) { 
    $form[$name] = $message; 
    if ($message) { 
     drupal_set_message($message, 'error'); 
    } 
    } 
    return $form; 
} 
?> 

我认为这个问题是要传递一个空字符串$name这样form_set_error看到那名被设置但不能是一个数组键是一个空字符串。我会尝试调用这样的功能:“!”。

form_set_error(, $errors[0]); 

</wrong>(当我第一次写这个我没看过我添加到代码的注释后,该行的isset()的INF前我将试图传递一个字符串,它是不是在$form阵列的任何部分,看看会发生什么,但可能会尝试下面的回答)

除此之外,从看它看起来你已经写了应工作的代码API Documentation for file_validate_extensions() 。你有没有尝试过使用类似drupal_set_message()的东西来检查你的部分是否开始运行,如果你认为他们应该是。这可能是你的if逻辑有问题。

相关问题