2011-10-04 4 views
4

CSV 파일을 업로드하려면 양식을 만들어야합니다. 다음과 같은 확장자를 가진Drupal 7의 업로드 필드에 유효한 확장자

파일 만 허용됩니다 : JPG, JPEG GIF PNG TXT 문서의 XLS PDF를 PPT PPS ODT, ODS ODP 나는 아래 양식 항목을 사용하려고 할 때 다음과 같은 오류가 발생합니다.

$form['data_file'] = array(
    '#type' => 'file', 
    '#title' => t('Data File'), 
    '#description' => t('CSV file to upload.'), 
    '#upload_validators' => array(
     'file_validate_extensions' => array('csv'), 
     'file_validate_size' => array(32*1024*1024), 
    ), 
); 

은 어떻게 CSV 파일이 검증을 통과 할 수 있습니까?

답변

4

같은

내가 정확하게 그것을 테스트 할 수 없습니다

하지만, 아마도 뭔가 내가 양식 유효성 검사 후크에 다음 코드와 함께 할 수 있었다.

function mymodule_myform_validate($form, $form_state) { 
    $validators = array('file_validate_extensions' => array('csv')); 
    $file = file_save_upload('zipdata_file', $validators); 
    ... 
} 
+0

는'드루팔은 7'이 https://api.drupal.org/api/drupal/includes%21file.inc/function/file_validate_extensions/7 및 HTTPS 링크 : // API. drupal.org/api/drupal/includes%21file.inc/function/file_validate/7 도울 수 있습니다. – Hitesh

1

The forms API reference에서이 주석은 어떻게 수행되는지 설명합니다. 이

$form['data_file'] = array(
    '#type' => 'file', 
    '#title' => t('Data File'), 
    '#description' => t('CSV file to upload.'), 
    '#upload_validators' => array(
     'file_validate_extensions' => array(0 => 'csv'), 
     'file_validate_size' => array(32*1024*1024), 
    ), 
); 
+0

내가 거기에 당신의 file_validate_extensions 구현을 볼 수 없습니다. – Coder1

+0

$ form [ 'file'] [ '# upload_validators'] [ 'file_validate_extensions'] [0] = 'png jpg gif pdf'; 페이지의 몇 줄에 불과했습니다. – DOKKA

+0

귀하의 게시물을 편집하셨습니다. 당신은 array ('0'=> array ('csv'))를 가졌습니다. 당신이 지금 무엇을 가지고 정확하게 내 원래 버전을 만듭니다. – Coder1

0

양식 기능

// don't forget this line 
$form['#attributes'] = array('enctype' => "multipart/form-data"); 

$form['container']['csv_file'] = array(
'#type' => 'file' , 
'#title' => t('csv FILE') , 
'#description' => t('insert your csv file here') , 
) ; 

귀하의 유효성 검사 기능

function _your_function_validate($form, $form_state) { 
$extensions = 'csv' ; 
$validators = array(
'file_validate_extensions' => array($extensions), 
); 
// if the file not uploaded or the extension is wrong set error 
if(!file_save_upload('csv_file', $validators)) { // cvs_file is the form name 
    form_set_error('csv_file', 'Please select the csv file') ;  
}else{ 
// now the form is uploaded lets make another validation for extension 
    $file = file_save_upload('csv_file', $validators, file_directory_path()) ; 

// another validator for the extension 
if($file->filemime != 'text/csv') { 
form_set_error('csv_file', 'Extensions Allowed : csv') ;  
}  
}  
} 
+0

D7에서는 양식에 enctype 속성이 필요하지 않습니다. 드루팔 (Drupal)은 자동으로 파일 필드를 추가합니다. – Coder1

+0

감사합니다. –

관련 문제