2010-11-20 5 views
3

나는 Drupal 7과 파일 업로드에 문제가있다. 작동하지 않는Drupal 7에서 양식을 업로드하는 방법은 무엇입니까?

내 코드 :

function test_form($form, &$form_state){ 

$form['#attributes'] = array('enctype' => "multipart/form-data"); 
$form['podcast'] = array(
    '#title' => 'Audio file', 
    '#type' => 'file', 
); 
$form['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Save'), 
); 
return $form; 

} 

function test_form_submit($form, &$form_state){ 

$vals = $form_state['values']; 
$filepath = 'public://test/'; 
//$filepath = 'temporary://test/'; 
$filename = 'rcc_date.mp3'; 

file_prepare_directory($filepath, FILE_CREATE_DIRECTORY); 
$file = file_save_upload('podcast', array('file_validate_extensions' => array()), $filepath.$filename); 
//got FALSE here. Why? 
die(print_r($file===FALSE).'-'); 

} 

그래서 경로 만들었지 만 파일이 없습니다 업로드를 수행하고 file_save_upload는 FALSE를 반환합니다. 또한 arrayValue()와 true를 $ validators로 사용해 보았습니다.

도움을 주시면 감사하겠습니다. 감사.

+0

동적으로 파일 이름을 가져 오는 방법은 무엇입니까? – Hitesh

+0

이 코드에서는 파일 이름이 완전히 필요하지 않습니다. 완전히 밖으로 내버려 둬. $ filename 변수를 설정하지 말고 $ filepath에 추가하지 마십시오. – Magmatic

+0

array ('file_validate_extensions'=> array())와 같이 파일 유효성 검사기의 빈 배열을 사용하려면 안전하지 않으므로 사용하지 않아야합니다. 대신 NULL을 사용하여 기본값을 사용하거나 직접 실제 목록을 만드십시오. https://api.drupal.org/api/drupal/includes!file.inc/function/file_save_upload/7 – Magmatic

답변

4

도. $ destination은 파일 이름을 포함하지 않아야하며 경로 만 포함하면 안됩니다.

+0

에있는 메모를 참조하십시오. $ destination이 어디인지 궁금한 분은 file_save_upload의 세 번째 인수입니다. $ file = file_save_upload ('podcast', array ('file_validate_extensions'=> array()), $ filepath); 또는 바람직하게는 다음과 같이 : $ file = file_save_upload ('podcast', null, $ filepath); 이것은 훨씬 안전합니다. 예를 들어, PHP 파일을 업로드 할 수 없으므로 엄청난 보안 위험이 따릅니다. https://api.drupal.org/api/drupal/includes!file.inc/function/file_save_upload/7을 참조하십시오. – Magmatic

관련 문제