檔案上傳 一次選取多個檔案

1 篇文章 / 0 new
author
檔案上傳 一次選取多個檔案
function multifile_upload_form($form, &$form_state) {
    $form = array();
    $form['file'] = array(
        '#type' => 'file',
        '#name' => 'files[]',  //多選檔存放位置
        '#title' => t('檔案上傳(可複選)'),
        '#description' => t('許可的檔案格式 jpg, jpeg, png and gif'),
        '#attributes' => array('multiple' => 'multiple'), //多選模式
        //'#upload_location' => 'public://', //複選模式此參數無作用
    );
    $form['submit'] = array( '#type' => 'submit', '#value' => t('Upload'), );
    return $form;
}
function multifile_upload_form_validate($form, &$form_state) {
    $num_files = count($_FILES['files']['name']);
    for ($i = 0; $i < $num_files; $i++) {
        $file = file_save_upload($i, array(//檔案儲存
            'file_validate_is_image' => array(),
            'file_validate_extensions' => array('png gif jpg jpeg'),
        ));
        if ($file) {
            if ($file = file_move($file, 'public://')) {//複選模式一定先存放在 暫存目錄下
                $form_state['values']['file'][$i] = $file;//需自行存入供後面使用
            } else {
                form_set_error('file', t('儲存失敗, 目的資料夾無法存入.'));
            }
        } else {
            form_set_error('file', t('檔案格式錯誤或無檔案上傳.'));
        }
    }
}
function multifile_upload_form_submit($form, &$form_state) {
    $fileList = array();
    if (is_array($form_state['values']['file'])) {
        foreach ($form_state['values']['file'] as $file) {  //上傳的檔案清單資訊
            $new_file = file_load($file->fid);  //從 file_managed 載入檔案存放資訊
            $file_info = image_get_info($file->uri); //載入圖檔資訊
            $fileList[] =  $new_file->filename;
            // 相關處理...
        }
    }
    drupal_set_message(t('上傳成功 ') . implode(', ', $fileList));
}
Free Web Hosting